La respuesta de Adam es bastante rápida, pero encontré que random.getrandbits(1)
es mucho más rápido. Si realmente quieres un valor lógico en lugar de una larga continuación
bool(random.getrandbits(1))
sigue siendo aproximadamente el doble de rápido que random.choice([True, False])
Ambas soluciones tienen que import random
Si máxima velocidad no es prioridad, entonces definitivamente random.choice
lee mejor
$ python -m timeit -s "import random" "random.choice([True, False])"
1000000 loops, best of 3: 0.904 usec per loop
$ python -m timeit -s "import random" "random.choice((True, False))"
1000000 loops, best of 3: 0.846 usec per loop
$ python -m timeit -s "import random" "random.getrandbits(1)"
1000000 loops, best of 3: 0.286 usec per loop
$ python -m timeit -s "import random" "bool(random.getrandbits(1))"
1000000 loops, best of 3: 0.441 usec per loop
$ python -m timeit -s "import random" "not random.getrandbits(1)"
1000000 loops, best of 3: 0.308 usec per loop
$ python -m timeit -s "from random import getrandbits" "not getrandbits(1)"
1000000 loops, best of 3: 0.262 usec per loop # not takes about 20us of this
Agregado éste después de ver la respuesta de @ Pavel
$ python -m timeit -s "from random import random" "random() < 0.5"
10000000 loops, best of 3: 0.115 usec per loop
Si todos estamos sobre el rendimiento, 'No, no random.getrandbits (1))' 'es más rápido que bool';) –
@Michal , un solo 'no' funciona igual de bien en este caso –
Es probable que ni siquiera necesite convertir a booleano, ya que 0/1 tiene los valores de verdad correctos. –