如何分发卡片直到整个卡片堆叠/包装是基于随机数/随机数分发,只需点击一下按钮?

时间:2012-06-20 07:59:40

标签: objective-c random shuffle arc4random playing-cards

我正在制作我的第一张纸牌游戏,需要随意洗牌。所以对于初学者来说,我已经创建了一个shuffle按钮,用于包含4行值的示例堆栈:

int i = arc4random() % 4;
NSLog(@"%d", i);

改组效果很好,但是我希望这个按钮允许用户分发随机卡,直到堆叠中没有更多卡片。每次我点击这个样本按钮,我需要NSLoged结果为3,然后是1,然后是0,然后是2,然后是“没有更多的卡片”,而不是四个随机数的列表和消息)。

是否有一种简单的方法可以在每次点击按钮时随机“分发号码”?

此外,arc4random是否会生成实数随机数或伪随机数?我已经阅读了很多关于它的线索,它似乎并不那么清楚。随机化数字的最佳方法是什么?

1 个答案:

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