-4

我有一组 30 张图像。我的要求是每次从 30 张图片中随机获取 20 张图片。每次都获取新的 20 张图像。

谁能告诉我如何实现这一目标?

我试过这个:

randIdx=arc4random()%[FrontsCards count];

但我得到了所有 30 个。如何从 30 个图像阵列中获得 20 个图像?

4

3 回答 3

5

简单的方法:mutableCopy图像数组,从 0 到 20 循环,选择一个图像 ( idx = arc4random_uniform(copiedArray.count);) 然后从 dupe 数组中删除选定的图像。

(不,不要使用arc4random() % array.count,模数会使随机性消失,这就是为什么有这个arc4random_uniform()功能。)

于 2013-05-23T07:40:42.740 回答
1
  1. 每次在获取之前对数组进行洗牌
  2. 从数组中获取前 20 个图像。

看看不同的洗牌算法。

于 2013-05-23T07:44:08.697 回答
0

只需使用所有 30 个图像中的前 20 个图像,并首先检查是否有任何图像已经出现在您的数组中,不会再次添加到数组中。为此,您尝试一个仅运行 20 次的循环。

于 2013-05-23T07:40:13.453 回答