gpt4 book ai didi

ios - 生成非重复随机数的 Swift 数组

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:33 27 4
gpt4 key购买 nike

我想在 Swift 中生成多个不同的随机数。这是程序。

  1. 设置一个空数组
  2. 生成一个随机数
  3. 检查数组是否为空
    一个。如果数组为空,插入随机数
    b.如果数组不为空,则将随机数与数组中的数字进行比较
    一世。如果数字相同,则重复2
    二.如果数字不相同,则插入随机数并重复2

    import UIKit 

    //the random number generator
    func randomInt(min: Int, max:Int) -> Int {
    return min + Int(arc4random_uniform(UInt32(max - min + 1)))
    }

    var temp = [Int]()
    for var i = 0; i<4; i++ {
    var randomNumber = randomInt(1, 5)
    if temp.isEmpty{
    temp.append(randomNumber)
    } else {
    //I don't know how to continue...
    }
    }

最佳答案

如果您使用您的方法,问题是您每次都会创建一个新的随机数。所以你可能有 4 次相同的随机数,所以你的数组将只有一个元素。

因此,如果您只想获得一个特定数字范围(例如 0-100)内随机排列的数字数组,您可以先用“正常”顺序的数字填充一个数组。例如 for 循环等:

var min = 1
var max = 5
for var i = min; i<= max; i++ {
temp.append(i)
}

之后,你可以使用一个shuffle方法来使用来自this answer的shuffle方法对数组的所有元素进行洗牌。 :

func shuffle<C: MutableCollectionType where C.Index == Int>(var list: C) -> C {
let count = countElements(list)
for i in 0..<(count - 1) {
let j = Int(arc4random_uniform(UInt32(count - i))) + i
swap(&list[i], &list[j])
}
return list
}

在你可以做类似的事情之后:

shuffle(temp)        // e.g., [3, 1, 2, 4, 5]

关于ios - 生成非重复随机数的 Swift 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28176093/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com