当前位置 : 主页 > 手机开发 > ios >

ios – 生成一个非重复随机数的Swift数组

来源:互联网 收集:自由互联 发布时间:2021-06-11
我想在 Swift中生成多个不同的随机数.这是程序. 设置一个空数组 生成一个随机数 检查阵列是否为空 一个.如果数组为空,请插入随机数 湾如果数组不为空,请将随机数与数组中的数字进行
我想在 Swift中生成多个不同的随机数.这是程序.

>设置一个空数组
>生成一个随机数
>检查阵列是否为空
一个.如果数组为空,请插入随机数
湾如果数组不为空,请将随机数与数组中的数字进行比较
 一世.如果数字相同,请重复2
 II.如果数字不相同,请插入随机数并重复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 for loop等:

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
}

Ater,你可以这样做:

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