package cn.ds;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
/**
* 测试随机生成前N个不重复的整数
* @author Administrator
*
*/
public class TestRandom {
public static void main(String[] args) {
randomNumber2File("e:/random.txt");
}
/**
* 根据提供的路径生成相应的随机数
* @param path
*/
public static void randomNumber2File(String path){
File file = new File(path);
OutputStream os = null;
try {
os = new BufferedOutputStream(new FileOutputStream(file));
byte[] buf = new byte[20];
for(int j = 0; j < 100; j++){
int[] arr = ranInt(9);
StringBuffer sb = new StringBuffer();
for(int i = 0; i < arr.length; i++){
sb.append(arr[i]);
}
sb.append("\r\n");
buf = sb.toString().getBytes();
os.write(buf);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(null != os){
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 利用随机生成数组的索引实现随机,并通过交换实现不重复
* @param n
* @return
*/
public static int[] ranInt(int n) {
int[] arr = new int[n];
int i,randomIndex,temp;
for(i = 0; i < n; i++){
arr[i] = i+1;
}
for(i = 1; i < n; i++){
randomIndex = ranIndex(0, i);
//交换当前元素和生成的随机元素
temp = arr[i];
arr[i] = arr[randomIndex];
arr[randomIndex] = temp;
}
return arr;
}
public static int ranIndex(int start, int end){
Random r = new Random();
int result;
result = r.nextInt(end);
return result;
}
}
随机生成前N个不重复的整数
最新推荐文章于 2022-08-05 17:22:23 发布