【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とか使って上手く書く必要がある。
 今回はとりあえず必要ないので、そこまではやっていない。