我是一种学习java中随机数生成和多线程的概念。
这个想法是在特定毫秒内不生成范围为 1000 的重复随机数(考虑到不超过 50 个数据,以多线程方式将在一毫秒内处理)。这样在特定时间生成的随机数列表是唯一的。你能给我任何想法,因为我最终会在特定的毫秒内生成几个重复的随机数(而且,有相当大的概率)。
我尝试了以下失败的事情。
Random random = new Random(System.nanoTime());
double randomNum = random.nextInt(999);
//
int min=1; int max=999;
double randomId = (int)Math.abs(math.Random()* (max - min + 1) + min);
//
Random random = new Random(System.nanoTime()); // also tried new Random();
double randomId = (int)Math.abs(random.nextDouble()* (max - min + 1) + min);
当我附加正在生成的时间戳时,在多线程环境中,我看到为 5000 多个唯一数据生成(2-4 次)相同的 id(大约 8-10)。