Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么生成随机数时迭代次数很重要?_Python_Python 3.x_Math_Random - Fatal编程技术网

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
Res
f1()
会给你
0
1
。对于最大值,我们假设它总是为我们提供
1
。在第一个循环中
0