Die Antwort von Adam ist ziemlich schnell, aber ich fand, dass random.getrandbits(1)
um einiges schneller sein. Wenn Sie wirklich einen Booleschen Wert statt eines Long-Wertes wollen, dann
bool(random.getrandbits(1))
ist immer noch etwa doppelt so schnell wie random.choice([True, False])
Beide Lösungen müssen import random
Wenn die höchste Geschwindigkeit keine Priorität hat, dann random.choice
liest sich definitiv besser.
Beachten Sie, dass random.choice()
langsamer ist als nur choice()
(nach from random import choice
) aufgrund der Attributssuche.
$ 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