Python 为什么生成随机数时迭代次数很重要?
我想使用给定的函数Python 为什么生成随机数时迭代次数很重要?,python,python-3.x,math,random,Python,Python 3.x,Math,Random,我想使用给定的函数f1()生成一个随机数。我有解决方案,但我无法理解生成随机数所需的迭代次数(本例中为5次) 我试着阅读其他的问题和答案,但他们关注的是如何生成一个随机数,而不是为什么要采用特定的技术 这是我的代码: import random def f1(): return(random.randint(0, 1)) def f29(): while(1): Res = 0 for _ in range(0, 5):
f1()
生成一个随机数。我有解决方案,但我无法理解生成随机数所需的迭代次数(本例中为5次)
我试着阅读其他的问题和答案,但他们关注的是如何生成一个随机数,而不是为什么要采用特定的技术
这是我的代码:
import random
def f1():
return(random.randint(0, 1))
def f29():
while(1):
Res = 0
for _ in range(0, 5):
Res = Res << 1 | f1()
if(Res <= 29):
return (Res)
print(f29())
随机导入
def f1():
返回(random.randint(0,1))
def f29():
而(一):
Res=0
对于范围(0,5)内的uu:
Res=Res这是因为每次迭代都要求变量Res的和。如果f1()
返回1,则每次迭代都有可能将Res
增加1位
如果f1()
始终返回1,则值将为:
iter 1:1
iter 2:3
iter 3:7
iter 4:15
这就是为什么将范围从5更改为4时,只能看到低于20的值。最高可以是15。你知道什么吗So Res=Res@Matthias是的,它向左移动指定的数字。请你详细说明一下好吗现在假设2**5==32,你就有了你的解决方案。
?用笔和纸,在你的代码中穿行,跟踪Res
,Resf1()
会给你0
或1
。对于最大值,我们假设它总是为我们提供1
。在第一个循环中0