如何从数组中随机获取选择元素

时间:2011-03-07 10:23:56

标签: iphone

我有一个包含12个对象{0,1,2,3,4,5,6,7,8,9,10,11}

的数组

从这个数组我必须随机选择6个值,但它们是唯一的不重复。

我正在使用这个

for (int i =0; i<6; i++) 
{
    NSLog(@"%d",rand()%12);

}

得到7 1 5 2 10 8

第二次得到0 2 11 1 0 5,这里重复0。但我总是需要,因为我的第一个输出意味着值不会重复。

我该怎么办,

任何人都可以帮助我。

提前感谢你。

4 个答案:

答案 0 :(得分:1)

如何使用数组的可变副本以及每次从数组副本中删除元素并减少使用数组的数组长度?

答案 1 :(得分:1)

试试这个

  1. 使用rand()获取随机数。
  2. 如果是,则再次获取随机数,检查前一个是否相同。否则将生成的no添加到结果数组中。
  3. 重复直到你在ur result array
  4. 中获得所需数量的元素

    希望这会有所帮助..

答案 2 :(得分:0)

您可以分两步完成:

1)列出原始列表中的唯一元素

2)使用你提到的rand程序从新列表中选择元素。

要解决1),我认为有两种方法

1a)对元素进行排序。使用排序数组,应该很容易过滤掉重复的元素。

1b)创建NSSet类的对象以创建一组元素。遍历数组并将元素添加到NSSet对象。 NSSet将具有原始数组中的唯一元素。

答案 3 :(得分:0)

使用Fisher-Yates shuffle算法来洗牌你的数组。 而不是前6个元素。