Python 2.6 と Python 2.7 で Random.random() を使用すると精度が異なるのはなぜですか?
例:
import random
import sys
rng = random.Random(0)
print sys.version
for i in range(10):
print repr(rng.random())
2.6.6 (r266:84297、2010 年 8 月 24 日、18:46:32) [MSC v.1500 32 ビット (Intel)]
0.84442185152504812
0.75795440294030247
0.4205715808308452.7.5 (デフォルト、2013 年 5 月 15 日 22:43:36) [MSC v.1500 32 ビット (Intel)]
0.8444218515250481
0.7579544029403025
0.420571580830845
なぜ異なる精度があるのですか?これは、この変更が原因である可能性があります: http://docs.python.org/2/tutorial/floatingpoint.html#representation-error
Python 2.7 および Python 3.1 より前のバージョンでは、Python はこの値を有効数字 17 桁に丸め、'0.10000000000000001' を与えていました。現在のバージョンでは、Python は最小の小数に基づいて値を表示します。これは真のバイナリ値に正しく丸められ、単純に「0.1」になります。