首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Swift将挑选的随机放在队列的最后?

使用Swift将挑选的随机放在队列的最后?
EN

Stack Overflow用户
提问于 2017-07-14 18:44:12
回答 3查看 40关注 0票数 0

我是swift的新手,现在我只是在玩玩和学习。我有一个字符串数组,并使用arc4random_uniform打印这些文本行。但我似乎想不出如何排除已经挑选的人不被重复挑选。至少在剩下的都选好之前。我得到的是:

代码语言:javascript
复制
let array1 = ["pizza", "carrot", "fish", "monkey", "window"]

let pickOfArray = Int(arc4random_uniform(4))

print (array1[pickOfArray])
EN

回答 3

Stack Overflow用户

发布于 2017-07-14 18:54:37

创建所选索引的第二个数组,并将代码更改为:

  1. 检查您的随机索引是否在pickedIndexes数组内
  2. 如果为false,则转到第4点,如果为true,则检查pickedIndexes.count是否与array1相同,如果是,则重置pickedIndexed并继续到下一个点,否则返回到点1
  3. 将您的数字附加到pickedIndexes并从array1

获取值

票数 0
EN

Stack Overflow用户

发布于 2017-07-14 19:13:12

  1. 创建2个数组
  2. 用所有可能的值填充一个数组如果不为空{ array2.append( array1.remove(at: randomIndex)) } else {交换数组}
  3. repeat 3

<>G29

基本上,将数组1中使用的所有值放入数组2中,直到使用了数组1中的所有值,然后以相反的方式重复(或将所有值放回数组1中)。

票数 0
EN

Stack Overflow用户

发布于 2017-07-14 19:27:38

另一种选择是,如果您可以更改原始Array,则只需在使用元素时将其删除:

代码语言:javascript
复制
var array1 = ["pizza","carrot","fish","monkey","window"]

while array1.count > 0 {
    let pickOfArray = array1.remove(at: Int(arc4random_uniform(UInt32(array1.count))))
    print(pickOfArray)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45101014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档