不想只是发布,“嘿,伙计们,你能为我想出一个很棒的随机化方法吗?” 所以我整天都在研究洗牌、创建真正随机排列等的算法,这真的令人生畏。最后选择了一种更简单的方法,如下所示。虽然我确实想创建一个高质量的游戏,但当然,我不会在在线赌场或其他任何地方使用这个算法。这只是一个iOS游戏。那么,这种随机/内存效率是否足够?还是我应该为此付出更多的时间和精力?TIA
旁白:每当我写“TIA”时,我都会想,“这是非洲”,而不是“提前致谢”。
@implementation NSMutableArray (Shuffle)
-(void)shuffle
{
for (int i = [self count] - 1; i > 0; i--) {
[self exchangeObjectAtIndex:(arc4random() % ([self count] - 1))
withObjectAtIndex:i];
}
}
@end
编辑:
好的。想要运行一些测试代码,所以我不会发布一些愚蠢的东西。:) 作为对 Adam 和 Nielsbot 的回应,您推荐的是更像这样的东西?
-(void)shuffle
{
for (int i = [self count] - 1; i > 0; i--) {
[self exchangeObjectAtIndex:(arc4random_uniform([self count] - 1))
withObjectAtIndex:i];
}
}
那正确吗?
像这样重复它会有什么好处吗?
-(void)shuffle
{
for (int i = [self count] - 1; i > 0; i--) {
[self exchangeObjectAtIndex:(arc4random_uniform([self count] - 1))
withObjectAtIndex:i];
}
for (int i = [self count] - 1; i > 0; i--) {
[self exchangeObjectAtIndex:(arc4random_uniform([self count] - 1))
withObjectAtIndex:i];
}
}