独特的随机数生成

时间:2012-05-26 13:48:32

标签: java

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

sRand((time)Null);
x=Rand();

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

Random rand = new Random(System.currentTimeMillis());

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

Random rand = new Random(System.currentTimeMillis());
int x=rand.nextInt(); // or long or float ...

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

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

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:0)

如果要生成随机数,最简单的方法是使用新的Random()。nextInt(),可能将其包装在Math.abs()中以避免否定。如果您需要的是唯一号码,则可以使用UUID.randomUUID()。