BigInteger q = new BigInteger(8, 10, new Random());
每次从我的桌面运行时都会按预期方式给出随机数字,而不是在Android中。
我总是得到相同的输出而不是随机数。请帮我随机获取BigIntegr。
获取您的信息:
int randQ = (int) (Math.random() * 9);
for (int r = 0; r < randQ; r++) {
q = q.nextProbablePrime();
}
是我做的快速修复,我对这个修复不满意,因为它消耗了额外的时间。 您的建议非常感谢
答案 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);