Objective-C中的随机数帮助?

时间:2010-09-24 20:25:44

标签: objective-c random

我想创建一个随机数,但每次点击按钮时都会生成一个新的随机数。我应该在哪里放置随机数声明,以便它只创建一个随机数?

3 个答案:

答案 0 :(得分:1)

尝试使用常量为随机数生成器播种。也许试试:

srand(1);

当然,出于测试目的,您可能希望使用变量,以便可以更改它并使用不同的“相同随机数”。

另一种方法是使用标志(名称类似randomNumIsGenerated)来确定数字是否已生成。第一次生成时,将其设置为true,然后生成的代码可能如下所示:

if (!randomNumIsGenerated)
{
   /*generate random number*/
   randomNumIsGenerated=true;
}

randomNumIsGenerated必须是静态的,否则,包含它的任何类的每个实例都将拥有自己的随机数,只能设置一次。将其设置为静态将确保所有实例使用相同的随机数。

或者最后,您可以在程序启动时设置一次随机数,可能是在启动函数中(Main,或者您称之为的任何内容)。

答案 1 :(得分:0)

您可以这样做:

- (IBAction)buttonPressed:(id)sender {
    static int randomNumber = -1;
    if (randomNumber == -1) {
        randomNumber = arc4random() % (/* maxNumberYouWantGenerated */) + 1;
    }

    ... // do stuff with the random number.
}

arc4random()函数可能是可用的最佳随机数生成器(rand()random()倾向于不生成所有随机数),并且在没有参数的情况下调用它将会使它会播种,所以你对这个帐户很好。

static关键字意味着首次调用方法时randomNumber将被初始化为-1,但在此之后每次都会保持相同的值(意味着一旦生成了它,随机数将保持不变)。然后,您可以使用randomNumber知道每次都是相同的随机数。

您所要做的就是决定要生成的最大数量,并将其放入方法中。

答案 2 :(得分:0)

不是确保只生成一个数字,而是使用-(void)setEnabled:(BOOL)禁用按钮(恰好是哪个按钮),NSButton继承自NSControl。在iOS下,UIControl has an "enabled" property用于同一目的。由于问题描述非常稀疏,因此不确定哪个选项最佳。再给我们一些details,以便我们提供更好的帮助。