相关疑难解决方法(0)

在Java中生成随机数的快速高效方法

我正在编写一个生成大量随机数的多线程Java程序.

其他详细信息: 这些数字用于创建0-99的随机数列表,不重复,并且列表中存在0-99范围内的每个数字(换句话说,列表包含0范围内的100个唯一元素-99).

生成随机数[事情已经尝试过!]

  1. 我有一个0-100的数字列表.我生成一个随机数,并将其用作索引,用于从中弹出一个元素ArrayList.
  2. 我用过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).

由于生成随机数列表是我算法中最昂贵的部分,我想优化它.这让我想到了一些问题:

  1. 生成随机数的最快方法是什么?
  2. 如上所述,生成随机数列表的最快方法是什么?

PS:

  1. 我发现Collections.shuffle()比第一种方法慢
  2. 有人建议我使用rngd从Unix硬件生成随机数.有人曾尝试过这个吗?你是怎样做的?

java random

2
推荐指数
1
解决办法
3779
查看次数

标签 统计

java ×1

random ×1