BigInteger q = new BigInteger(8, 10, new Random());
每次从我的桌面运行时都会按预期给我随机数,但不是在 Android 中。
在 Android 中,我总是只得到相同的输出而不是随机数。请帮助我获得随机的 BigIntegr。
供您引用:
int randQ = (int) (Math.random() * 9);
for (int r = 0; r < randQ; r++) {
q = q.nextProbablePrime();
}
是我做的快速修复,我对这个修复不满意,因为它消耗了额外的时间。
非常感谢您的建议
最佳答案
这是一个非常普遍的问题,与语言或平台无关。
每次都必须重用 Random()
的实例来获取随机数。默认构造函数将使用当前时间为 pseudo-random number generator 设置种子。当前时间相对于您的程序不会很快改变,因此您会一直获得相同的数字,直到时钟计时。
如果您不重新播种,则每次您要求另一个值时,它都会为您提供不同的数字。您可以通过重用实例来避免重新播种,并调用:
Random random = new Random(); // reuse this instance...
int value = random.nextInt(); // use these values instead of new Random()
参见:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Random.html
关于android - BigInteger q = new BigInteger(8, 10, new Random());在 Android 中没有产生预期的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8444276/