亚当的答案相当快,但我发现random.getrandbits(1)要快得多。 如果你真的想要一个布尔值而不是很长的话
bool(random.getrandbits(1))
仍然是random.choice([True, False])两倍
如果最高速度不是优先,那么random.choice肯定会读得更好
$ 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
在看到@Pavel的答案后添加了这个
$ python -m timeit -s "from random import random" "random() < 0.5" 10000000 loops, best of 3: 0.115 usec per loop