2011-11-23 147 views
7

如何在java中生成非常大的随机数?我在说10000数字的东西?我知道我们必须使用BigInteger,但我们怎么能做到这一点?做这种事最有效的方法是什么?请提供一个小例子。谢谢。生成非常大的随机数java

回答

17

那么,一种方法是去Random.org并下载一个二进制随机文件。这些文件是从大气噪音中产生的,所以非常随意。我在我的国际象棋引擎中使用Zobrist键。

或者你可以去

BigInteger b = new BigInteger(256, new Random()); 

它会给你想要的东西。在这个例子中,一个由256位组成的BigInteger。

+1

+1。这是文档中的四个构造函数,我没有看到:D。 – Vlad

+0

发生在我们身上! –

7

联合Random.nextBytes(byte[])BigInteger(byte[])

import java.util.*; 
import java.math.*; 
class Test{ 
    public static void main(String[]_){ 

     int n = 16; 

     Random r = new Random(); 
     byte[] b = new byte[n]; 
     r.nextBytes(b); 
     BigInteger i = new BigInteger(b); 

     System.out.println(i); 
    } 
} 
+1

+1:可能使用mod()来获取特定数量的数字。 –

+0

你能解释一下这是如何工作的吗?我对字节部分或多或少感到困惑。谢谢 –

+0

您分配一个字节数组,nextBytes用随机值填充它,然后BigInteger被初始化为由该字节序列定义的二进制数。但我认为雅科的解决方案更加简洁。 – Vlad