1

アプリの 1 つで GKShuffledDistribution を使用しようとしていますが、nextInt(upperBound:) メソッドは、すべての可能な値を使い果たしているわけではないという点で、nextInt メソッドと同じようには機能しません。デモを行うには、プレイグラウンドを開いて次のようにします。

import GameplayKit
let shuffled = GKShuffledDistribution.init(lowestValue: 0, highestValue: 100)

for _ in 0...25{
    shuffled.nextInt(upperBound: 100)
}

この方法を使用して2つの重複を取得しました。私がそれを置き換えた場合:

shuffled.nextInt()

重複はありません。これはどのように nextInt(upperBound:) が動作するはずですか? もしそうなら、これを説明するドキュメントを教えてもらえますか? ありがとう。

4

1 に答える 1

1

upperBoundインスタンスを作成するときに設定した値よりも小さい、あなたの値lowestValueと新しい (一時的な)値の間のランダムな値を要求できるようにするために提供されています。highestValuehighestValueGKShuffledDistribution

おっとっと。それは口が悪いです。

これをもっと画像的に試してみましょう。

通常は 0 から 20 の間の乱数が必要ですが、この同じシャッフルから 0 から 10 の間だけの乱数が必要な場合は、upperBound を 10 に設定すると、0 から 10 の間の数値が「引き出され」ます。 、現在のシャッフル サイクルに残っている数字の。

ええと...少なくとも、それが機能するはずだと思います。

理論的にupperBoundは、例のように を 100 に設定すると、ドキュメントが示唆しているため、highestValueがアクティビティの決定要因になるはずです。

このメソッドによって生成される数値の実際の上限は、highestValue プロパティと upperBound パラメーターの小さい方です。

于 2017-01-24T10:54:14.963 に答える