2010-01-16 37 views

回答

0

NSArray是一个不可变的对象,这意味着你不能改变元素的顺序。我想我得到了你所得到的。只需在数据结构的顶部写一些功能来随机选择这个数组的元素。您需要跟踪已经访问了哪些元素,以免重新选择它们。

您也可以使用子类型NSMutableArray复制数组。一旦选择了一个问题,将它从这个数组中删除(你可以这样做,因为数组现在是可变的)

对随机数使用C函数。参见rand()和srand()

+0

我建议用arc4random()代替rand()和srand()用于Objective-C – 2012-12-25 05:44:13

0

如果我正确地理解了这个问题:你有一组问题,你想显示一个子集(大概固定的大小?),但子集需要保存如原始数组中的顺序?

假设你有N个问题,并且想随机选择其中的M个问题。您可以创建一个存储索引到原始数组的元素数组[0 ..(N-1)]。然后,您可以使用Knuth/Fisher-Yate's algorithm对这个数组进行混洗,对最初的M个元素进行排序,然后使用这些前M个索引对原始数组进行查找。