我想在我的一個應用程序中使用GKShuffledDistribution,但nextInt(upperBound :)方法與nextInt方法不同,因爲它沒有耗盡所有可能的值。爲了演示,打開一個操場並執行此操作:GKShuffledDistribution - 使用upperbound不會耗盡所有可能的值?
import GameplayKit
let shuffled = GKShuffledDistribution.init(lowestValue: 0, highestValue: 100)
for _ in 0...25{
shuffled.nextInt(upperBound: 100)
}
我得到了2個使用此方法的副本。如果我取代它:
shuffled.nextInt()
我沒有得到任何重複。這是如何nextInt(upperBound :)應該工作?如果是這樣,有人能指出我解釋這個文件嗎?謝謝。
謝謝你幫我理解這一點。因此,當我在for循環中使用'upperBound'時,每次經過for循環時都會暫時將該值更改爲100,從而導致我看到的重複項。它是否正確? –
我不完全確定當你使用與'highestValue'相同的數字時它是如何工作的。或者在你看到重複之前你抽出了多少個數字。可能有一個錯誤。 GameplayKit被大約3人使用,所以它不會被徹底測試。 – Confused
所以我通過設置upperBound爲5和for循環0 ... 3在操場上測試了這個。我得到的結果是「4,0,1,1」,確認你最初的答案,即upperBound成爲for循環中臨時的「highestValue」。一旦迭代循環,臨時「highestValue」的記憶就不會被保留,因此在選擇所有可能的值之前,我得到了重複的值。當蘋果未能這樣做時,你的回答可以幫助我理解這個參數。謝謝。 –