0

我正在创建我的第一个纸牌游戏,需要洗牌。因此,对于初学者,我为包含 4 个值的示例堆栈创建了一个随机播放按钮,其中包含以下行:

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

洗牌效果很好,但我希望这个按钮允许用户分发随机牌,直到堆栈中没有更多牌为止。每次单击此示例按钮时,我都需要NSLoged结果类似于 3,然后是 1,然后是 0,然后是 2,然后是“没有更多卡片”,例如(而不是四个随机数的列表和一条消息)。

是否有一种简单的方法可以在每次单击按钮时随机“分配一个数字”?

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

4

1 回答 1

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];
}
于 2012-06-20T08:49:35.453 回答