Генератор случайных чисел iOS в новом представлении - PullRequest
26 голосов
/ 06 марта 2012

Мне нужна помощь с приложением. Мне нужно сделать генератор случайных чисел для целых чисел от нуля до пятнадцати, который затем, в зависимости от того, какое число создано, подтолкнет к представлению с соответствующим числом. Вот как я хочу, чтобы это работало

Нажмите кнопку -> генератор случайных чисел дает число от 0 до 15 -> представление переходит к другому представлению, которому присвоен номер, который дал генератор случайных чисел.

Кто-нибудь может мне помочь с кодом? Спасибо

Ответы [ 7 ]

97 голосов
/ 06 марта 2012

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

NSInteger randomNumber = arc4random() % 16;

Затем вы можете выполнить переключение или серию операторов if / else, чтобы выдвинуть другой контроллер представления:

UIViewController *viewController = nil;
switch (randomNumber)
{
    case 0:
        viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    break;
    // etc ...
}

[self.navigationController pushViewController:viewController animated:YES];

Вернее, после перечитывания вопроса это будет выглядеть следующим образом:

UIViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" 
viewController.number = randomNumber;

И у вас будет свойство NSInteger в подклассе MyViewController.

19 голосов
/ 06 января 2014

Вы можете использовать arc4random_uniform

NSUInteger r = arc4random_uniform(16);
10 голосов
/ 13 сентября 2014

Согласно Apple, лучший способ - использовать arc4random_uniform и передать верхнюю границу:

arc4random_uniform(16)

Из документов:

arc4random_uniform () вернет равномерно распределенное случайное число меньше, чем upper_bound. arc4random_uniform () рекомендуется более конструкции типа `` arc4random ()% upper_bound '', поскольку он избегает "по модулю смещение ", когда верхняя граница не является степенью двойки.

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/arc4random.3.html

9 голосов
/ 06 марта 2012
    int randomIndex = arc4random() % 14 + 1 ; // gives no .between 1 to 15 ..

    switch (randomIndex)
{
    case 0 :
    push view 1 ;
    break;

    case 1:
    ...

}
0 голосов
/ 28 марта 2019
extension CGFloat {
   static func random() -> CGFloat {
       return CGFloat(arc4random()) / CGFloat(UInt32.max)
   }
}
0 голосов
/ 11 февраля 2019

В Swift 4.2 нам не нужно вызывать некоторую функцию «arc4random_uniform» для создания случайных чисел, теперь мы можем просто вызвать функцию «random (in: RANGE)».

//Create Random numbers Swift 4.2

//Int
let randomInt = Int.random(in: 1...10)

//Double
let radomDouble = Double.random(in: 1...10)

//Float
let randomFloat = Double.random(in: 1...10)
0 голосов
/ 07 августа 2014

Мы можем использовать функцию C rand() для этого:

Генерирует целое число от 1 до 30. В качестве альтернативы вы можете использовать функцию arc4random, например:

int i = arc4random() % 30;
NSLog(@"Random Number: %i", i);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...