iOS随机数生成器到一个新视图

Sam*_*Sam 27 xcode objective-c ipad ios

我需要一些应用程序的帮助.我需要为0到15之间的整数创建一个随机数生成器,然后根据创建的数字推送到具有相应数字的视图.这就是我希望它的工作方式

按下按钮 - >随机数生成器给出0到15之间的数字 - >视图推送到另一个已分配随机数生成器给出的数字的视图.

任何人都可以帮我代码吗?谢谢

Ash*_*row 97

arc4random()是标准的Objective-C随机数生成器功能.它会给你一个零到......之间的数字,超过十五!您可以使用以下代码生成0到15之间的数字(因此,0,1,2,... 15):

NSInteger randomNumber = arc4random() % 16;
Run Code Online (Sandbox Code Playgroud)

然后你可以做一个开关或一系列if/ else语句来推送一个不同的视图控制器:

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

[self.navigationController pushViewController:viewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

或者更确切地说,在重新阅读问题时,它将如下所示:

UIViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" 
viewController.number = randomNumber;
Run Code Online (Sandbox Code Playgroud)

并且你NSInteger在MyViewController子类上有一个属性.

  • 函数arc4random_uniform()是首选的,因为它不受模偏差的影响. (8认同)

Rém*_*rin 19

您可以使用 arc4random_uniform

NSUInteger r = arc4random_uniform(16);
Run Code Online (Sandbox Code Playgroud)


fro*_*975 10

根据Apple的说法,最好的方法是使用arc4random_uniform并传递上限:

arc4random_uniform(16)
Run Code Online (Sandbox Code Playgroud)

来自文档:

arc4random_uniform()将返回小于upper_bound的均匀分布的随机数.arc4random_uniform()建议使用像``arc4random()%upper_bound''这样的结构,因为当上限不是2的幂时,它避免了"模偏差".

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


Shu*_*ank 9

    int randomIndex = arc4random() % 14 + 1 ; // gives no .between 1 to 15 ..

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

    case 1:
    ...

}
Run Code Online (Sandbox Code Playgroud)

  • 或者`arc4random()%16`匹配正确的范围,同样`arc4random()%14 + 1`给出`[1,14]`. (4认同)