java产生不重复随机数改进算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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--;

}

}

}

相关文档
最新文档