BigInteger q = new BigInteger(8,10,new Random());没有在Android中产生预期的结果

时间:2011-12-09 10:39:20

标签: android biginteger

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();
        }

是我做的快速修复,我对这个修复不满意,因为它消耗了额外的时间。 您的建议非常感谢

2 个答案:

答案 0 :(得分:3)

这是一个非常常见的问题,与语言或平台无关。

您必须重复使用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

答案 1 :(得分:1)

<强> EDITED
而是使用:

// creates random object with current instant as seed
Random generator = new Random((new Date()).getTime()); 
BigInteger q = new BigInteger(8, 10, generator);