ios - 生成一个不重复随机数的 Swift 数组

标签 ios arrays swift random

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

  1. 设置一个空数组
  2. 生成随机数
  3. 检查数组是否为空
    A。如果数组为空,则插入随机数
    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方法对数组的所有元素进行打乱,shuffle方法从this answer开始:

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/31467587/

相关文章:

python - 如何使用 PyCall 在 Julia 中导入的 numpy.ma 创建掩码数组

ios - 在后台 iOS 中重新连接 BLE 设备

c# - Xamarin 'iOS Foundation NSDate to C# DateTime conversion' 反之亦然不考虑夏令时

ios - 如何访问 Apple 照片应用程序中使用的人物相册

ios - Swift UIView 从堆栈 View 中消失

c - 在两个 digis 数组之间执行求和

javascript - Javascript将字符串转换为多维数组

arrays - 如何在 Swift 4 中将金字塔类型的字符串转换为 double 组

ios - 基于当前目标导入框架

ios - 无法使用 safari 打开某些网站