独特的随机数生成

Loo*_*ers 4 java

我正在寻找基于当前时间使用java生成唯一随机数的方法.我是一名c ++程序员,在c ++中,我通常会随着时间播种Random,所以在每个特定时刻我都可以得到一个唯一的随机数,它的工作原理如下:

sRand((time)Null);
x=Rand();
Run Code Online (Sandbox Code Playgroud)

在java中我发现我可以使用相同的方法通过随机播种随机数,如下所示:

Random rand = new Random(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)

这是我使用我在互联网上找到的所有方法在java中生成随机数的问题,但没有一个是真正随机的,它们的范围从负数到正数.例如:

Random rand = new Random(System.currentTimeMillis());
int x=rand.nextInt(); // or long or float ...
Run Code Online (Sandbox Code Playgroud)

我得到的是一系列不是真正随机的数字,结果与C++中的结果完全不同.

我只是想知道在java中执行此操作的最佳方法是,有些类似于或非常接近TAC编号生成.

das*_*ght 8

Java和C++随机数都是随机数.当然算法不同,所以结果也不同.

如果你想要一个足够强大的随机数生成器用于加密,你可以使用SecureRandom:它的界面不太直观,它消耗更多的CPU,但其输出质量远高于普通的Java PRNG,

  • 这几乎可以肯定是你能做的最糟糕的事情.`SecureRandom`是内置于Java中的,它几乎肯定比任何随机数生成器设计得更好,你或我,或者StackOverflow上的其他任何人都可以编写. (4认同)