gpt4 book ai didi

arrays - 随机获取数组元素

转载 作者:行者123 更新时间:2023-11-28 07:06:31 25 4
gpt4 key购买 nike

我有一个 Int 数组,我想从我的数组中随机选择一个 Int,并在特定条件下填充二维网格。我尝试了下面的代码,它可以正常运行一段时间,但在某些情况下,它会在无限循环中运行。

    for row in 0..<NumRows {
for column in 0..<NumColumns {

var gemType:GemType

if gemArray.count == 1 {

gemType = GemType(rawValue: gemArray[0])!

} else {

do {

index = Int(arc4random_uniform(UInt32(gemArray.count)))

gemType = GemType(rawValue: gemArray[index])!

} while (column >= 1 &&
gems[column - 1, row]?.gemType == gemType)
|| (row >= 1 &&
gems[column, row - 1]?.gemType == gemType)

if gemArray.count > 0 {

gemArray.removeAtIndex(index)
}
}

let gem = Gem(column: column, row: row, gemType: gemType)
gems[column, row] = gem

// 4
set.insert(gem)
}
}
}
return set

有什么帮助吗?

最佳答案

以随机方式选择所有数字的好方法如下。 (注意:这只是一个伪代码。)

Suppose array is of size [1...n]
1. k=n
2. Choose a random number between 1 to k. Let it be x.
3. Swap a[k] with a[x]. Your chosen random number is a[x].
4. k=k-1.
5. Loop until k=1.

关于arrays - 随机获取数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30375442/

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