1. ホーム
  2. python

[解決済み] Pythonでランダムなブール値を取得する?

2022-01-29 10:23:05

質問

私は、Pythonでランダムなブール値を得るための最良の方法(高速かつエレガント)を探しています(コインを反転させる)。

今のところ、私は random.randint(0, 1) または random.getrandbits(1) .

私が知らないだけで、もっと良い選択肢があるのでしょうか?

解決方法は?

Adamの回答はかなり早いのですが、私が見つけたのは random.getrandbits(1) の方がかなり速いです。もし本当にlongではなくbooleanが必要な場合は

bool(random.getrandbits(1))

と比べても約2倍の速さです。 random.choice([True, False])

どちらのソリューションも必要なのは import random

スピードを最優先しないのであれば random.choice 間違いなく読みやすい。

なお random.choice() よりも遅いです。 choice() (の後に from random import choice ) 属性ルックアップによるものです。

$ python3 --version
Python 3.9.7
$ python3 -m timeit -s "from random import choice" "choice([True, False])"
1000000 loops, best of 5: 376 nsec per loop
$ python3 -m timeit -s "from random import choice" "choice((True, False))"
1000000 loops, best of 5: 352 nsec per loop
$ python3 -m timeit -s "from random import getrandbits" "getrandbits(1)"
10000000 loops, best of 5: 33.7 nsec per loop
$ python3 -m timeit -s "from random import getrandbits" "bool(getrandbits(1))"
5000000 loops, best of 5: 89.5 nsec per loop
$ python3 -m timeit -s "from random import getrandbits" "not getrandbits(1)"
5000000 loops, best of 5: 46.3 nsec per loop
$ python3 -m timeit -s "from random import random" "random() < 0.5"
5000000 loops, best of 5: 46.4 nsec per loop