在iPhone中生成随机值

时间:2009-09-17 00:53:00

标签: iphone objective-c xcode random

我用过rand()。但即使重新启动应用程序,它也会给出一个特定的值。

我已在我的申请中实施了以下内容。

- (void)viewDidLoad {
[super viewDidLoad];
int x,y;

x=random() % 480; y=random() % 300;

lblT.center=CGPointMake(x,y); // my label lblT
}

尝试在您的应用程序中实现,并启动应用程序。 重新启动应用程序后,您会发现该标签将具有特定值。

6 个答案:

答案 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));
}