2016-07-05 8 views
0

Я видел много примеров для генерации случайных чисел в определенном диапазоне [min-max], но мне нужен Java-код, который генерирует случайные числа из n цифр или более, поэтому в этом случае min= 10000000 и no max.Создайте случайное число из n цифр или более

Примечание - Я использую BigInteger

+2

«нет Макс» не предполагая, что вы используете 'int' или' long', есть не более : 'Integer.MAX_VALUE' или' Long.MAX_VALUE'. –

+1

org.apache.commons.lang3.RandomStringUtils может помочь вам здесь, вы можете создать String, который содержит только цифры с необходимой длиной. – dty

+0

Я использую BigInteger – rainman

ответ

2

Вы можете использовать конструктор BigInteger(int numBits, Random rnd) для создания положительных случайных чисел с N бит.

Как вы хотите иметь, как минимум, вы можете добавить, что, как смещение к сгенерированных чисел:

Random random = ThreadLocalRandom.current(); 
BigInteger base = BigInteger.valueOf(10000000); // min 
int randomBits = 50; // set as many bits as you fancy 

BigInteger rnd = base.add(new BigInteger(randomBits, random)); 
1

BigInteger принимает десятичную строку в одном из его конструкторов. Создайте отдельные цифры и добавьте их в строку. Когда у вас будет достаточно цифр в строке, создайте BigInteger из строки. Вы можете ограничить первую цифру в [1 .. 9], чтобы избежать ведущих нулей, в зависимости от вашего точного требования.