java产生不重复随机数改进算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
虽然生成不重复的随机数算法,
但是百度一下后还是发现是重复计数的算法居多,
由于此算法可能会产生万中无一的死循环,
所以改进了此算法,
虽然改进的算法也可能产生万中无一的有规律的随机数,
但是能够保证程序的可运行性。
以下是用java写的算法源代码:
import java.util.Random;
public class Rand {
int[] array, Rarry;
int subscript, count;
Random r;
/**
* init
*/
public Rand(int start, int end, int count) { subscript = end - start + 1;
array = new int[subscript];
Rarry = new int[count];
r = new Random();
for (int i = 0; i < array.length; i++) { array[i] = i + start;
}
this.count = count;
}
/**
* for show
*/
public void showOldArray() {
System.out.println("\nold array:");
for (int i : array) {
System.out.print(i + " ");
}
}
public void showDeliverArray() {
System.out.println("\ndeliver array:");
for (int i : Rarry) {
System.out.print(i + " ");
}
}
/**
* make random
*/
public void make() {
for (int i = 0; i < count; i++) {
int tempSub = r.nextInt(subscript);
Rarry[i] = array[tempSub];
array[tempSub] = array[subscript - 1];
subscript--;
}
}
}