についてrandom.uniform
、docstringは言う:
四捨五入に応じて、[a、b)または[a、b]の範囲の乱数を取得します。
しかし、「丸めに依存する」が正確に何を意味するのかはわかりません。
についてrandom.uniform
、docstringは言う:
四捨五入に応じて、[a、b)または[a、b]の範囲の乱数を取得します。
しかし、「丸めに依存する」が正確に何を意味するのかはわかりません。
読み取りに関する現在のドキュメント:random.uniform()
forおよびforの
N
ようなランダムな浮動小数点数を返します。a <= N <= b
a <= b
b <= N <= a
b < a
終点の値
b
は、式の浮動小数点の丸めに応じて、範囲に含まれる場合と含まれない場合がありますa + (b-a) * random()
。
コンピューターの浮動小数点演算は精度に制限があり、この不正確さによって引き起こされる丸め誤差は、返さb
れるランダム値に使用される値の全範囲に含まれない可能性がありuniform()
ます。
random.random()
0.0(包括的)から1.0(排他的)の間の値を返します。との値がありa
、b
合計の浮動小数点計算はにa + (b-a) * (1.0 - epsilon/2)
等しくありませんが、よりもわずかに低くb
なりますが、他の組み合わせの場合、合計はに等しくなります。は、プラットフォーム上の浮動小数点数の最小精度(を参照)であり、最大値が返される可能性があります。b
b
epsilon
sys.float_info
1.0 - epsilon/2
random.random()
コンピューターでの浮動小数点演算が不正確である理由の詳細に興味がある場合は、次の2つの記事をお勧めします。
rounding
つまり、3.45を上に丸めると、4になりますが、下に丸めると、3になります。したがって、この場合、[または]からの範囲の値は丸めに応じて変化します。