我正在寻找在python中获得随机布尔值(抛硬币)的最佳方法(快速而优雅).

目前我用的是random.randint(0, 1)random.getrandbits(1).

有没有我不知道的更好的 Select ?

推荐答案

亚当的答案很快,但我发现random.getrandbits(1)random.getrandbits(1)快得多.如果你真的想要布尔型而不是长型

bool(random.getrandbits(1))

仍然是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

Python相关问答推荐

如何从维基百科的摘要部分/链接列表中抓取链接?

绘制系列时如何反转轴?

覆盖Django rest响应,仅返回PK

在Pandas框架中截短至固定数量的列

多处理代码在while循环中不工作

如何调整spaCy token 化器,以便在德国模型中将数字拆分为行末端的点

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

acme错误-Veritas错误:模块收件箱没有属性linear_util'

如何删除索引过go 的lexsort深度可能会影响性能?' &>

如何标记Spacy中不包含特定符号的单词?

有没有一种方法可以从python的pussompy比较结果中提取文本?

梯度下降:简化要素集的运行时间比原始要素集长

无法在Docker内部运行Python的Matlab SDK模块,但本地没有问题

计算天数

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

使用BeautifulSoup抓取所有链接

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

Python全局变量递归得到不同的结果

如何排除prefecture_related中查询集为空的实例?