さて、あなたがnumpyのを使用している場合、あなたは、単にnumpy.nextafterを使用することができます。
>>> import numpy
>>> numpy.nextafter(1, 0)
0.99999999999999989
注意(少なくとも私にとっては)それ:
ちなみに
>>> import sys
>>> 1-sys.float_info.epsilon
0.9999999999999998
>>> numpy.nextafter(1, 0) - (1-sys.float_info.epsilon)
1.1102230246251565e-16
>>> numpy.nextafter(1, 0) > (1-sys.float_info.epsilon)
True
、二@Robertカーンのポイントへそれはときどきrandom.uniform となりますは、(0,1)以外の入力の上限を含みます:
>>> import random, numpy
>>> numpy.nextafter(0,1)
4.9406564584124654e-324
>>> random.uniform(0, numpy.nextafter(0,1))
0.0
>>> random.uniform(0, numpy.nextafter(0,1))
0.0
>>> random.uniform(0, numpy.nextafter(0,1))
4.9406564584124654e-324
[一般的に、この問題に近づけるより良い方法があると思います。]
出典
2012-02-23 04:00:59
DSM
数学が信じられなければ、あなたは信じられません。 –
ほとんどのシステムでは、最も小さなインクリメントであるイプシロンのコンセプトがあります –
ああ、私は0.99999 ... <1の炎の醸造を感じることができます – wim