|
Random\Randomizer::nextFloat半開区間 [0.0, 1.0) から、float の値を取得する 説明
public float Random\Randomizer::nextFloat()
半開区間(左閉右開) に一様に分散した float を等確率に返します。
区間には
返される float の値が、指定された右開の部分区間にある確率は、
部分区間の大きさに比例します。
つまり、返される float が この性質を使うと、 Random\Randomizer::nextFloat を活用して返される float が指定された確率 より小さい ことをチェックすることで、 指定された確率でランダムな boolean 値を生成することが可能になります。
警告
乗算や加算(いわゆるアフィン変換)を使って、 この関数の戻り値を異なる区間に拡大/縮小すると、 結果の値に偏りが出るかもしれません。 なぜなら、浮動小数点数は数直線上で均一に分布するわけではないからです。 全ての値が浮動小数点数によって正確に表現できるとは限らないので、 アフィン変換の結果が暗黙の丸め処理によって求める区間から外れた値になってしまう可能性もあります。 アフィン変換の結果生じる問題の 詳細な説明 は、 Random\Randomizer::getFloat のドキュメントに説明があります。 任意の区間内でランダムな float の値を生成するには、 Random\Randomizer::getFloat を使います。任意の区間内でランダムな整数を生成するには、 Random\Randomizer::getInt を使います。 パラメータこの関数にはパラメータはありません。 戻り値
半開区間 [0.0, 1.0) ( エラー / 例外
例例1 Random\Randomizer::nextFloat の例
上の例の出力は、 たとえば以下のようになります。 You won 例2 アフィン変換を使った間違った拡大演算
上の例の出力は以下となります。 Wrong scaling: 4.5 参考
|