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/

10-13 03:00