python - 在python中获取随机 bool 值?

我正在寻找在 python 中获得随机 bool 值的最佳方法(快速而优雅)(掷硬币)。

目前我正在使用 random.randint(0, 1)random.getrandbits(1)

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

最佳答案

Adam 的回答非常快,但我发现 random.getrandbits(1) 的速度要快得多。如果你真的想要一个 bool 值而不是一个长的那么

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

https://stackoverflow.com/questions/6824681/

相关文章:

linux - 如何在不运行 Bash 脚本的情况下对其进行语法检查?

python - python多久刷新一次文件?

python - 初始化 dict : curly brace literals {} or the

linux - Linux 内核是如何测试的?

python - 检查字符串是否以列表中的一个字符串结尾

python - Pandas 索引列标题或名称

python - 将 Django 模型对象转换为 dict 并且所有字段都完好无损

linux - 如何使用 'cut' 查找最后一个字段

shell - 从文件中读取随机行的简单方法是什么?

linux - 如何找出给定用户的组?