2013-09-05 4 views
0

Я хочу сгенерировать два разных случайных числа, которые имеют 15 цифр. Как я могу это сделатьГенерировать случайное число с определенным количеством цифр

Благодаря

+0

ли вы имеете в виду 15 десятичных цифр, то есть число между '0' и' 999999999999999'? –

+0

да, что конкретное число должно иметь 15 цифр – iDia

+0

Не более 15 цифр или ровно 15 цифр? –

ответ

1

Большинство случайных чисел производящих функций, таких как arc4random производить только номера в диапазон 0 .. 2^32-1 = 2147483647. Для 15 цифр десятичного числа, вы можете вычислить 3 числа в диапазоне 0 .. 10^5-1 и «сцепить» им:

uint64_t n1 = arc4random_uniform(100000); // 0 .. 99999 
uint64_t n2 = arc4random_uniform(100000); 
uint64_t n3 = arc4random_uniform(100000); 

uint64_t number = ((n1 * 100000ULL) + n2) * 100000ULL + n3; // 0 .. 999999999999999 

Или, если вам нужно точно 15 цифр:

uint64_t n1 = 10000 + arc4random_uniform(90000); // 10000 .. 99999 
uint64_t n2 = arc4random_uniform(100000); // 0 .. 99999 
uint64_t n3 = arc4random_uniform(100000); // 0 .. 99999 

uint64_t number = ((n1 * 100000ULL) + n2) * 100000ULL + n3; 
+0

- это до 15 цифр? или ровно 15 цифр? – iDia

+0

@iDia: Я обновил ответ. (Сначала были некоторые ошибки, но я надеюсь, что сейчас это правильно.) –

+0

много спасибо, что работает ,, – iDia

1

Попробуйте ::

arc4random() является стандартной функцией генератора случайных чисел Objective-C. Это даст вам число от нуля до ... ну, более пятнадцати! Вы можете сгенерировать число от 0 до 15 (так, 0, 1, 2, ... 15): случайное число из 6 цифр будет:

int number = arc4random_uniform(900000) + 100000; 

это даст случайных чисел от 100000 до 899999 .

Надеюсь, что это поможет!

+1

* «число от 0 до 15» * - это не то же самое, что * «цифры, которые содержат 15 цифр» * ... –

+0

Это было просто случайное число поколений. отредактированный ответ, чтобы получить 6 цифр. вы можете изменить номера до 15 цифр. :) –

+0

'arc4random_uniform()' дает (самое большее) 32-разрядное случайное число, но 15 десятичных цифр требуют 50 бит! –

0

используя arc4random() функциональность, которую вы можете достичь для генерации случайных чисел.

Вот link, который даст вам очень хорошее представление о arc4random().
надеюсь, что это поможет

Смежные вопросы