我有一组 30 张图像。我的要求是每次从 30 张图片中随机获取 20 张图片。每次都获取新的 20 张图像。
谁能告诉我如何实现这一目标?
我试过这个:
randIdx=arc4random()%[FrontsCards count];
但我得到了所有 30 个。如何从 30 个图像阵列中获得 20 个图像?
我有一组 30 张图像。我的要求是每次从 30 张图片中随机获取 20 张图片。每次都获取新的 20 张图像。
谁能告诉我如何实现这一目标?
我试过这个:
randIdx=arc4random()%[FrontsCards count];
但我得到了所有 30 个。如何从 30 个图像阵列中获得 20 个图像?
简单的方法:mutableCopy
图像数组,从 0 到 20 循环,选择一个图像 ( idx = arc4random_uniform(copiedArray.count);
) 然后从 dupe 数组中删除选定的图像。
(不,不要使用arc4random() % array.count
,模数会使随机性消失,这就是为什么有这个arc4random_uniform()
功能。)
看看不同的洗牌算法。
只需使用所有 30 个图像中的前 20 个图像,并首先检查是否有任何图像已经出现在您的数组中,不会再次添加到数组中。为此,您尝试一个仅运行 20 次的循环。