我正在制作我的第一张纸牌游戏,需要随意洗牌。所以对于初学者来说,我已经创建了一个shuffle按钮,用于包含4行值的示例堆栈:
int i = arc4random() % 4;
NSLog(@"%d", i);
改组效果很好,但是我希望这个按钮允许用户分发随机卡,直到堆叠中没有更多卡片。每次我点击这个样本按钮,我需要NSLoged
结果为3,然后是1,然后是0,然后是2,然后是“没有更多的卡片”,而不是四个随机数的列表和消息)。
是否有一种简单的方法可以在每次点击按钮时随机“分发号码”?
此外,arc4random
是否会生成实数随机数或伪随机数?我已经阅读了很多关于它的线索,它似乎并不那么清楚。随机化数字的最佳方法是什么?
答案 0 :(得分:1)
您可以创建一个包含随机空间中所有可能元素的数组,例如:
NSMutableArray *randomNumber = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0], [NSNumber numberWithInt:1],[NSNumber numberWithInt:2],[NSNumber numberWithInt:3], nil];
然后,您随机获取数组的元素,并在以下后删除它们:
for (int i = 0; i < 4; i++){
int randIndex = arc4random()%[randomNumber count];
NSLog(@" %d %d", randIndex, [[randomNumber objectAtIndex:randIndex] intValue]);
[randomNumber removeObjectAtIndex:randIndex];
}