Генерация очень больших случайных чисел Java - PullRequest
8 голосов
/ 23 ноября 2011

Как мы можем генерировать очень большое случайное число в Java? Я говорю что-то вроде 10000 цифр? Я знаю, что мы должны использовать BigInteger, но как мы можем это сделать? Какой самый эффективный способ сделать что-то подобное? Пожалуйста, приведите небольшой пример. Спасибо.

Ответы [ 3 ]

18 голосов
/ 23 ноября 2011

Ну, один из способов - перейти на Random.org и загрузить один из двоичных случайных файлов. Файлы генерируются из атмосферного шума, так что это очень случайно. Я использовал его для ключей Зобриста в своем шахматном движке.

В качестве альтернативы вы можете пойти

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

, который даст вам то, что вы хотите. В этом примере BigInteger, состоящий из 256 бит.

8 голосов
/ 23 ноября 2011

Объединение 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);
    }
}
0 голосов
/ 07 февраля 2019

Вы можете просто набрать:

int number = (int)(Math.random() * 100);

Также вы можете генерировать еще большие числа, если вы измените множитель:

int number = (int)(Math.random() * 1000);

PS Вам не нужно импортировать класс.

...