我想创建一个随机数,但每次点击按钮时都会生成一个新的随机数。我应该在哪里放置随机数声明,以便它只创建一个随机数?
答案 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,以便我们提供更好的帮助。