gpt4 book ai didi

swift - 在 Swift 中调用不同程度的 arc4random 随机性?

转载 作者:行者123 更新时间:2023-11-28 09:49:20 24 4
gpt4 key购买 nike

这可能是一个相当愚蠢的问题。我想知道在 Swift 中使用 arc4random_uniform 是否可以实现不同的细微差别/随机性程度。这是一个例子:

let number = arc4random_uniform(10) + 1
print(number)

在这种情况下,将随机打印一个从 1 到 10 的数字。但是有没有办法可以重复随机结果 2 到 3 次?结果将是这样的:

1, 1, 6, 6, 6, 3, 3, 8, 8, 9, 9, 9 ...

// 1) Randomly selected and 2) repeated 2 to 3 times randomly.

也许我可以同时使用两个 arc4random_uniform 函数,但无法正确表达它们。如果您能给我一些建议,将不胜感激。 <3

最佳答案

为此,您需要生成两个值:您的随机 valuerepeatCount。此外,您需要记住这两个值,以便您可以重复 value。您可以使用自定义类执行此操作:

class RandomWithRepeats {
var range: ClosedRange<Int>
var repeatRange: ClosedRange<Int>
var repeatCount = 0
var value = 0

init(range: ClosedRange<Int>, repeatRange: ClosedRange<Int>) {
self.range = range
self.repeatRange = repeatRange
}

// generate a random number in a range
// Just use Int.random(in:) with Swift 4.2 and later
func random(in range: ClosedRange<Int>) -> Int {
return Int(arc4random_uniform(UInt32(range.upperBound - range.lowerBound + 1))) + range.lowerBound
}

func nextValue() -> Int {
// if repeatCount is 0, its time to generate a new value and
// a new repeatCount
if repeatCount == 0 {
// For Swift 4.2, just use Int.random(in:) instead
value = self.random(in: range)
repeatCount = self.random(in: repeatRange)
}

repeatCount -= 1
return value
}
}

示例:

let rand = RandomWithRepeats(range: 1...10, repeatRange: 2...3)

// generate 20 random repeated numbers
for _ in 1...20
{
print(rand.nextValue(), terminator: " ")
}
6 6 6 8 8 8 10 10 10 2 2 9 9 5 5 8 8 8 5 5 

关于swift - 在 Swift 中调用不同程度的 arc4random 随机性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52116557/

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