我有一个包含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。但我总是需要,因为我的第一个输出意味着值不会重复。
我该怎么办,
任何人都可以帮助我。
提前感谢你。
答案 0 :(得分:1)
如何使用数组的可变副本以及每次从数组副本中删除元素并减少使用数组的数组长度?
答案 1 :(得分:1)
试试这个
希望这会有所帮助..
答案 2 :(得分:0)
您可以分两步完成:
1)列出原始列表中的唯一元素
2)使用你提到的rand程序从新列表中选择元素。
要解决1),我认为有两种方法
1a)对元素进行排序。使用排序数组,应该很容易过滤掉重复的元素。
1b)创建NSSet类的对象以创建一组元素。遍历数组并将元素添加到NSSet对象。 NSSet将具有原始数组中的唯一元素。
答案 3 :(得分:0)
使用Fisher-Yates shuffle算法来洗牌你的数组。 而不是前6个元素。