Objective c iOS随机数生成器到新视图
我需要一些应用程序的帮助。我需要为0到15之间的整数创建一个随机数生成器,它将根据创建的数字推送到具有相应数字的视图。 这就是我想要的工作方式 按下按钮-->随机数生成器提供一个介于0和15之间的数字-->视图将按下另一个已分配随机数生成器提供的数字的视图 有人能帮我写代码吗? 感谢arc4random()是标准的Objective-C随机数生成器函数。它会给你一个介于零和。。。嗯,超过十五个!您可以使用以下代码生成一个介于0和15之间的数字(因此,0,1,2,…15):Objective c iOS随机数生成器到新视图,objective-c,ios,xcode,ipad,Objective C,Ios,Xcode,Ipad,我需要一些应用程序的帮助。我需要为0到15之间的整数创建一个随机数生成器,它将根据创建的数字推送到具有相应数字的视图。 这就是我想要的工作方式 按下按钮-->随机数生成器提供一个介于0和15之间的数字-->视图将按下另一个已分配随机数生成器提供的数字的视图 有人能帮我写代码吗? 感谢arc4random()是标准的Objective-C随机数生成器函数。它会给你一个介于零和。。。嗯,超过十五个!您可以使用以下代码生成一个介于0和15之间的数字(因此,0,1,2,…15): NSInteger r
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;
在MyViewController子类上有一个
NSInteger
属性。您可以使用arc4random\u uniform
NSUInteger r = arc4random_uniform(16);
我们可以使用C函数
rand()
这将生成一个介于1和30之间的整数。或者,您可以像这样使用arc4random
功能:
int i = arc4random() % 30;
NSLog(@"Random Number: %i", i);
根据苹果公司的说法,最好的方法是使用arc4random_统一并通过上限:
arc4random_uniform(16)
从文档中:
arc4random\u uniform()将返回均匀分布的随机数
小于上界arc4random_uniform()建议在
类似于“`arc4random()%上限”的构造,因为它避免了“模”
偏差“当上限不是二的幂时
在Swift 4.2中,我们不必调用一些“arc4random\u uniform”函数来创建随机数,现在我们只需调用函数“random(In:RANGE)”
你说的是哪种代码?这里有一个关于随机数生成的链接:或者arc4random()%16
匹配正确的范围,还有arc4random()%14+1
给出了[1,14]
。为什么是-1?除%14+1外;我看不出这有什么错。函数arc4random_uniform()是首选的,因为它不会受到模偏差的影响。这个函数会生成伪随机数吗?它使用什么种子?@CharlesChow引用手册页,“arc4random()函数使用arc4密码使用的密钥流生成器,它使用8*8位S盒。S盒可以处于大约(2**1700)状态。arc4random()函数返回0到(2**32)范围内的伪随机数-“在64位模式下,arc4random\u uniform返回一个32位的整数,而NSUInteger是一个64位的整数,对不对?u_int32\u t arc4random\u uniform(u_int32\u t/*上限*/)\u OSX\u可用\u启动(\u MAC\u 10\u 7,\u IPHONE\u 4\u 3);看起来它总是32位的无符号整数。
arc4random_uniform(16)
//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)
extension CGFloat {
static func random() -> CGFloat {
return CGFloat(arc4random()) / CGFloat(UInt32.max)
}
}