java 中唯一的随机数 - srand? (就像在 C++ 中一样)
Unique random - srand in java ? (like in c++)
目前我正在使用
Random rand = new Random();
myNumber = rand.nextInt((100-0)+1)+0;
这是一个伪随机数,因为我总是得到相同的数字序列。
我记得在 C++ 中,您可以只使用 ctime 并使用 srand 使其唯一。 java 是怎么做到的?
如果您需要 Java 中的唯一随机数,请使用 SecureRandom
。此 class 提供了一个加密强度高的随机数生成器 (RNG),这意味着它可以在创建证书时使用,并且此 class 与其他解决方案相比速度较慢。
如果您需要一个可以重置的可预测随机数,请使用 Random
,您可以在其中调用 .setSeed(number)
对其进行播种,以使值从该点开始可预测。
如果你想要一个每次启动程序都是随机的伪随机,就用一个普通的Random
。默认情况下,随机实例是当前时间的某个哈希值的种子。
为了在每个解决方案中获得最佳随机性,重用随机实例很重要。如果不这样做,它给出的大部分输出将在相同的时间跨度内相似,并且在丢弃 SecureRandom 的情况下,它将花费大量时间重新创建新的随机数。
目前我正在使用
Random rand = new Random();
myNumber = rand.nextInt((100-0)+1)+0;
这是一个伪随机数,因为我总是得到相同的数字序列。 我记得在 C++ 中,您可以只使用 ctime 并使用 srand 使其唯一。 java 是怎么做到的?
如果您需要 Java 中的唯一随机数,请使用
SecureRandom
。此 class 提供了一个加密强度高的随机数生成器 (RNG),这意味着它可以在创建证书时使用,并且此 class 与其他解决方案相比速度较慢。如果您需要一个可以重置的可预测随机数,请使用
Random
,您可以在其中调用.setSeed(number)
对其进行播种,以使值从该点开始可预测。如果你想要一个每次启动程序都是随机的伪随机,就用一个普通的
Random
。默认情况下,随机实例是当前时间的某个哈希值的种子。
为了在每个解决方案中获得最佳随机性,重用随机实例很重要。如果不这样做,它给出的大部分输出将在相同的时间跨度内相似,并且在丢弃 SecureRandom 的情况下,它将花费大量时间重新创建新的随机数。