Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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_Random_Module - Fatal编程技术网

Python随机选择

Python随机选择,python,random,module,Python,Random,Module,我有一个随机生成0或9的代码。此代码运行289次 import random track = 0 if track < 35: val = random.choice([0, 9]) if val == 9: track += 1 else: val = 0 随机导入 轨道=0 如果轨道小于35: val=random.choice([0,9]) 如果val==9: 轨道+=1 其他: val=0 根据该代码,如果生成了35次9,

我有一个随机生成0或9的代码。此代码运行289次

import random
track = 0
if track < 35:
    val = random.choice([0, 9])
    if val == 9:
        track += 1
    else:
        val = 0
随机导入
轨道=0
如果轨道小于35:
val=random.choice([0,9])
如果val==9:
轨道+=1
其他:
val=0

根据该代码,如果生成了35次9,则生成0。所以在开始时有一个很大的偏差,最后0大部分是输出的

有没有办法减少这种偏差,使9在289次中均匀分布


感谢您提前提供的任何帮助

听起来您想对脚本生成的数字添加一些偏差。因此,您需要考虑如何使用概率为分配的数字分配正确的偏差

例如,假设您要生成一个包含289个整数的列表,其中最大值为35个9。35约为289的12%,因此,您将为数字9指定.12的概率。从那里,你可以给数字1-8分配一些其他的(相对较小的)概率,给数字0分配一些相对较大的概率

似乎能够对此问题执行所需的操作

一般示例(带概率的字符串A、B、C或D.1.2.3.4):

具体示例:

numbers = dict( 1=725, 2=725, 3=725, 4=725, 5=725, 6=725, 7=725, 8=725, 9=12, 0=3 )
wrand = Walkerrandom( numbers.values(), numbers.keys() )
#Add looping logic + counting logic to keep track of 9's here
track = 0
i = 0
while i < 290
    if track < 35:
        val = wrand.random()
        if val == 9:
            track += 1
    else:
        val = 0
    i += 1
numbers=dict(1=725,2=725,3=725,4=725,5=725,6=725,7=725,8=725,9=12,0=3)
wrand=walkerAndom(numbers.values(),numbers.keys())
#在这里添加循环逻辑+计数逻辑来跟踪9
轨道=0
i=0
当我<290
如果轨道小于35:
val=wrand.random()
如果val==9:
轨道+=1
其他:
val=0
i+=1

显然,您希望9出现35次,其余的出现0次,但您希望9的分布均匀。这是很容易做到的洗牌

values = [9] * 35 + [0] * (289 - 35)
random.shuffle(values)

为什么它是那样缩进的?为什么不去掉“else”分支?它没有任何作用。为什么不编写
val=random.choice([0,10])
。然后,您还可以删除完整的
if
语句。“根据此代码,如果9生成35次,则生成0。因此,在开始时存在很大的偏差,最终0大部分是输出的。”否。
random。choice
一开始可能生成35次0,但不一定如此。这是随机的。列表中的元素应以统一的概率绘制。另请参见:@OliviaCassendre,将此代码放入函数中,并让它对您需要生成的每个值进行
生成。如果存在其他约束,则需要显式地声明它们。另外,如果您事先不知道需要多少值,就不可能获得均匀分布。您需要从链接站点获取模块并将其导入到代码中。链接包含有关导入自定义模块的信息。我已将代码粘贴到我的文件中。。。但是我在设置自定义模块时遇到了问题。因此,在文件的开头,我有“导入walkerrandom”模块“walkerrandom.py”模块与我根据导入它的程序放在同一目录中
values = [9] * 35 + [0] * (289 - 35)
random.shuffle(values)