python - 快速随机生成 0 或 1
问题描述
使用 python,我使用 random.randint(0,1) 随机生成 0 或 1。虽然它很慢,因为我需要做大约十亿次。有更快的方法吗?
total=0
n=1000000000
for x in range(n):
money=2
while True:
x=random.randint(0,1)
if x==1:
break
if x==0:
money*=2
continue
total+=money
print(total/n)
解决方案
正如已经评论过的那样,无论如何这在纯 Python 中都会有些慢。
但是平原random.random()
(random.randint()
建立在上面,尽管复杂性令人惊讶)已经返回了一个介于 0.0 和 1.0 之间(或者更准确地说,在 range )的浮点值[0.0, 1.0)
,所以如果你想要一个具有合理稳定分布的随机二进制值你可以做类似的事情
from random import random # Avoiding the module attribute access on each loop will save some time
...
if random() < 0.5:
# do one thing
else:
# do the other
我认为即使对于 1e9 循环,这也是可以接受的。否则你可以试试 Cython。
推荐阅读
- flutter - PhoneAuthProvider.credential() 返回 AuthCredential 而不是 PhoneAuthCredential
- mysql - 为每行和 id mysql 附加最后 3 个日期条目
- python - 通过 API Gateway 触发 Lambda 的特定功能
- r - 创建捕获 4 个字符串变量中是否缺少字段的变量
- firebase - 如何删除 react-native firebase 依赖
- android - 当我将 min sdk 版本设置为 19 时,app:mergeDebugResources FAILED 出现重复资源错误
- sql - PostgreSQL - 如何找到顶级路线(两列相同的记录)?
- nuget - 编译时更改了程序集绑定重定向
- jsf - JSF 2 + Primefaces - 更新标签不起作用
- javascript - 如何使用正则表达式在数据表中搜索完全匹配