※注意!
この記事の内容も間違ってはいませんが、もっと良さそうな方法を後から見つけました。
こちらの記事も参照してください。
【python】複数の選択肢から確率で選ぶ - 静かなる名辞
本文
タイトル通りのものが強化学習の実装で必要になった。
- の確率で処理Aを行う
- の確率で処理Bを行う
理想としては、を引数として与えてやれば、True or Falseを返すような関数が標準ライブラリにあれば良かったのだが、なかった。見落としてるかもしれないが。
どう書いたらええんかいな、と若干迷ったが、冷静に考えたら簡単だった。
from random import random def p_select(epsilon): if epsilon > random(): return True else: return False
確認のために10000回回し、TrueとFalseの数をカウントする。
>>> lst = [p_select(0.2) for x in range(10000)] >>> lst.count(True) 7986 >>> lst.count(False) 2014
問題なさそう。ただし、この実装は遅いはずなので、速度がほしければnumpyとか使って上手く書く必要がある。
今回はとりあえず必要ないので、そこまではやっていない。