我正在寻找使用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编号生成。
答案 0 :(得分:8)
Java和C ++随机数都是pseudorandom。当然算法不同,所以结果也不同。
如果你想要一个强大到足以用于加密的随机数生成器,你可以使用SecureRandom
:它的界面不太直观,它消耗更多的CPU,但其输出质量要高得多而不是普通的Java PRNG,
答案 1 :(得分:0)
如果要生成随机数,最简单的方法是使用新的Random()。nextInt(),可能将其包装在Math.abs()中以避免否定。如果您需要的是唯一号码,则可以使用UUID.randomUUID()。