Gen*_*use -4 arrays random swift
我正在尝试在0-4之间生成最多5个数字,并且不会多次重复生成相同的数字。该程序将在尝试3次后停止,因此生成的随机数应为4,3,2,而不是4,3,4(例如)。
我创建了一个包含5个字符串元素的数组。单击按钮3次后,数组中的至少3个字符串将显示在标签上。单击按钮3次后,该应用程序将结束。但是,问题是每次单击按钮时,数组中的某些字符串都会不断重复自身。我发现了一种防止数字重复的方法,例如,代替(1,1,3)(1,3,1)。但就我而言,我不希望数字一旦生成就生成。例如。(1,3,4)而不是(1,3,1),其中重新生成(1)。
var fruits: [String] = ["Apple", "Mango", "Cherry", "Strawberry", "Blueberry", "Banana"] // fruits to be displayed in the label
func randomizeNum() -> UInt32 {
var randomNumber = arc4random_uniform(UInt32(fruits.count))
while previousNumber == randomNumber {
randomNumber = arc4random_uniform(UInt32(fruits.count))
}
displayLbl.text = fruits[Int(randomNumber)]
previousNumber = randomNumber
print("the random num is \(randomNumber)") // This prints for example 5, 1, 5. Need it to print only numbers that's not yet displayed with 3 attempts.
return randomNumber
}
Run Code Online (Sandbox Code Playgroud)
我希望此函数的输出生成一个随机数,例如0,4,1,但它生成5,1,5或0,4,0,其中(0)将再次重新生成。
您应该在这里进行的操作是洗净阵列,然后取头三个结果。
let randomFruits = fruits.shuffled()[...2]
Run Code Online (Sandbox Code Playgroud)
现在,RandomFruits是从您的水果数组中获取的三个随机字符串的数组切片。
现在只显示它们。