如何从NSMutableArray中随机抽取而不是两次使用相同的数字?

时间:2011-01-31 17:05:36

标签: iphone ios random nsmutablearray

对于我正在制作的游戏,我传递了一组具有一定数量的对象,我将让用户识别。我想随机地呈现这些对象。但我还需要做到这一点,以便同一个对象不会出现两次。

所以这是我暂时想到的解决方案:我将一个对象数组传递给我的游戏控制器,大小为10.在游戏控制器中,我创建一个介于0-9之间的随机数,然后从数组中取出这个数字作为索引...我不知道这是否会起作用,因为我需要确保在游戏会话中不使用相同的随机数。

关于如何实现这种随机游戏逻辑的任何想法?

谢谢

2 个答案:

答案 0 :(得分:3)

你应该寻找一个改组算法并随机播放你的数组内容。

这样你就可以弹出阵列中的数字而不用担心它们是否曾被使用过 - 当你到达最后一个数字时,重新洗牌并重复。

以下是一个示例:http://www.cocoanetics.com/2009/04/shuffling-an-nsarray/

答案 1 :(得分:2)

为避免同一个索引出现多次,我每次都会从数组中删除该对象。如果你基于数组大小的随机数,你应该没问题。如果您希望能够重新创建数组以重新开始,请复制该数组。