Pythonでランダムなブール値を取得しますか?質問する

Pythonでランダムなブール値を取得しますか?質問する

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

今のところはrandom.randint(0, 1)または を使用していますrandom.getrandbits(1)

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

ベストアンサー1

アダムの答えはかなり速いですが、私はそれがrandom.getrandbits(1)かなり速いと感じました。本当にlongではなくbooleanが欲しい場合は、

import random
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

おすすめ記事