Генерировать случайные числа с фиксированной длиной цифр?

Я генерирую случайное число с помощью

int randomID = arc4random() % 3000;

Но я хочу сгенерировать случайное число как минимум с 4 цифрами. например 1000, 2400, 1122

Я хочу знать код для Objective C.


person Amir iDev    schedule 27.09.2013    source источник
comment
Сколько раз вы хотите сгенерировать 4-значное число?   -  person Dharmbir Singh    schedule 27.09.2013
comment
@DharmbirChoudhary Я хочу отправлять ему сообщения на сервер, он не будет храниться в кеше, он будет чистым.   -  person Amir iDev    schedule 27.09.2013
comment
Этот вопрос задавался так много раз. Пожалуйста, проверьте этот ответ stackoverflow. ком/вопросы/160890/. Вам лучше использовать решение с arc4random_uniform, поскольку ваша верхняя граница составляет 9999 или 2999.   -  person marsei    schedule 27.09.2013


Ответы (2)


Пожалуйста попробуйте

генерировать числа: 1000~9999

int randomID = arc4random() % 9000 + 1000;

генерировать номера: 1000~2999

int randomID = arc4random() % 2000 + 1000;
person lanbo    schedule 27.09.2013
comment
Предположим, если случайное число равно 3000 и добавить 1000, то будет 4000. Таким образом, пользователь хочет меньше 3000. Так что это может быть проблемой в будущем. - person Dharmbir Singh; 27.09.2013
comment
если требуется менее 3000 и 4 цифры, вы можете использовать int randomID = arc4random() % 2000 + 1000; - person lanbo; 27.09.2013

Не менее четырех цифр, верно?

Итак, вам нужно что-то с гибкостью:

-(NSString *)getRandomPINString:(NSInteger)length
{
    NSMutableString *returnString = [NSMutableString stringWithCapacity:length];

    NSString *numbers = @"0123456789";

    // First number cannot be 0
    [returnString appendFormat:@"%C", [numbers characterAtIndex:(arc4random() % ([numbers length]-1))+1]];

    for (int i = 1; i < length; i++)
    {
        [returnString appendFormat:@"%C", [numbers characterAtIndex:arc4random() % [numbers length]]];
    }

    return returnString;
}

и используйте его следующим образом:

NSString *newPINString = [self getRandomPINString:4];
person Phil Wilson    schedule 27.09.2013