我用过rand()。但即使重新启动应用程序,它也会给出一个特定的值。
我已在我的申请中实施了以下内容。
- (void)viewDidLoad {
[super viewDidLoad];
int x,y;
x=random() % 480; y=random() % 300;
lblT.center=CGPointMake(x,y); // my label lblT
}
尝试在您的应用程序中实现,并启动应用程序。 重新启动应用程序后,您会发现该标签将具有特定值。
答案 0 :(得分:13)
arc4random()
是一个内置函数,不需要播种(因此不会产生可以通过种子生成的可预测序列),并且它可以方便地返回整数。我从不使用任何其他东西。
答案 1 :(得分:8)
在random()
之前使用以下行 srand(time(NULL));
答案 2 :(得分:2)
软件中的随机数生成器实际上会给出PSEUDORANDOM值序列。
除非您使用来自真正随机事件的值为随机数生成器播种,否则每次使用该软件时都会得到相同的序列。
我不知道你的软件,但看起来你没有播种随机数生成器,Gcamp可能在正确的轨道上。
答案 3 :(得分:1)
由于你使用 random()而不是 rand(),你应该使用这段代码为随机生成器播种......
srandomdev();
答案 4 :(得分:1)
我会这样做:
景观:
- (void)viewDidLoad {
[super viewDidLoad];
int x = arc4random()%480;
int y = arc4random()%320;
lblT.center=CGPointMake(x,y);
}
不是风景:
- (void)viewDidLoad {
[super viewDidLoad];
int x = arc4random()%320;
int y = arc4random()%480;
lblT.center=CGPointMake(x,y);
}
答案 5 :(得分:1)
使用此代码,仅用于整数随机值
#define random(min,max) ((arc4random() % (max-min+1)) + min)
测试
for (int i = 0; i < 500; i++) {
NSLog(@"rand is %d", random(-100,100));
}