我正在寻找最好的方法(快速和优雅)在python中获得一个随机布尔值(抛硬币)。

目前我使用的是随机。Randint(0,1)或random.getrandbits(1)。

还有我不知道的更好的选择吗?


当前回答

你可以试试这个,它会随机生成true和false的数组:

A =[bool(i) for i in np.array(np.random.randint(0,2,10))]

出来:[真,真,真,真,真,假,真,假,真,假]

其他回答

找到了一个更快的方法:

$ python -m timeit -s "from random import getrandbits" "not getrandbits(1)"
10000000 loops, best of 3: 0.222 usec per loop
$ python -m timeit -s "from random import random" "True if random() > 0.5 else False"
10000000 loops, best of 3: 0.0786 usec per loop
$ python -m timeit -s "from random import random" "random() < 0.5"
10000000 loops, best of 3: 0.0579 usec per loop

我喜欢

 np.random.rand() > .5
import random
random.choice([True, False])

也会起作用。

你可以使用Faker库,它主要用于测试,但能够提供各种虚假数据。

安装:https://pypi.org/project/Faker/

>>> from faker import Faker
>>> fake = Faker()
>>> fake.pybool()
True

如果你想生成一些随机布尔值,你可以使用numpy的random模块。来自文档

np.random.randint(2, size=10)

将在开放区间[0,2)中返回10个随机统一整数。关键字size指定要生成的值的数量。