首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中得到一个随机布尔值?

在python中得到一个随机布尔值?
EN

Stack Overflow用户
提问于 2011-07-26 10:46:02
回答 8查看 214.8K关注 0票数 313

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

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

有没有我不知道的更好的选择?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-07-26 11:18:46

亚当的回答是相当快的,但我发现random.getrandbits(1)要快得多。如果你真的想要一个布尔值而不是长整型,那么

代码语言:javascript
运行
复制
bool(random.getrandbits(1))

仍然是random.choice([True, False])的两倍

两种解决方案都需要import random

如果最快的速度不是优先的,那么random.choice的阅读效果肯定会更好。

请注意,由于属性查找,random.choice()choice()慢(在from random import choice之后)。

代码语言:javascript
运行
复制
$ 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
票数 422
EN

Stack Overflow用户

发布于 2011-07-26 10:48:38

代码语言:javascript
运行
复制
import random
random.choice([True, False])

也行得通。

票数 231
EN

Stack Overflow用户

发布于 2014-03-05 23:23:24

找到了一种更快的方法:

代码语言:javascript
运行
复制
$ 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
票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6824681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档