#実は違っていた!random.randint(a,b) と np.random.randint(a,b)
Pythonでよく使われているライブラリでこんなことがあるのかとハマってしまった件。
次のGoogle Collaboratory で実行可能な単純なコードを見てもらいたい。
広く使われている一般的なライブラリを呼び出しているだけだし
式的には全く同じように見えるのですが、
出力結果が似ていて実は異なる結果になっていることを。
We need some caution when using randint whether this function is called from random library or numpy library. The result will be very different !!
import random
import numpy as np
for i in range (500):
print (np.random.randint(0,37))
for j in range (500):
print (random.randint(0,37))
numpyをつけて呼び出したrandomの場合は0~36しか出力されない。
一方でnumpyをつけずにrandomを呼び出した場合は0~37になってしまうのだ!
なぜ気づいたかというと
以前、カジノで儲けられないかを検証した記事を投稿したのですが、
ランダム結果が違うのではないかとの指摘があり、
調査したところ
np.random.randint(a,b) と random.randint(a,b)
の分析結果が全く違うことが判明!正反対の結果になり( ; ; )(T.T)
普段から使われていそうなこんな単純な式で
全く異なる分析結果が生まれることになってしまう紛らわしいことってあるんだ!
注意喚起資料をネットで見たことがなかったのだが。
皆さんも普段から使われているコードで少し先頭に何かついただけで挙動が変わってしまうということがあるかもしれない。いや、ライブラリ使っていると絶対にあるはず!
良い勉強になりました!
元の記事:
https://qiita.com/mnoda/items/3a0d1f6e21b52bbf79d0#comment-904693840460457f4ae3