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個不重複的整數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.