我正在编写一个生成大量随机数的多线程Java程序.
其他详细信息: 这些数字用于创建0-99的随机数列表,不重复,并且列表中存在0-99范围内的每个数字(换句话说,列表包含0范围内的100个唯一元素-99).
生成随机数[事情已经尝试过!]
ArrayList.Collections.shuffle().以下是方法1的代码:
ArrayList<Integer> arr = new ArrayList<Integer>();
for (int i = 0; i < N; i++){
arr.add(i, i);
}
for(int i=0; i<N; i++){
int indx = rand.nextInt(arr.size());
res.add(arr.get(indx));
arr.remove(indx);
}
Run Code Online (Sandbox Code Playgroud)
对于第二种方法,我用第二个for循环替换了Collections.shuffle(arr).
由于生成随机数列表是我算法中最昂贵的部分,我想优化它.这让我想到了一些问题:
PS:
Collections.shuffle()比第一种方法慢rngd从Unix硬件生成随机数.有人曾尝试过这个吗?你是怎样做的?