Python随机选择

时间:2015-04-27 02:32:32

标签: 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

根据该代码,如果生成9次9,则生成0。所以在开始时存在很大偏差,最后0主要是输出。

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

感谢您提前提供任何帮助

2 个答案:

答案 0 :(得分:1)

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

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

Walker's Alias Method似乎可以为您解决此问题。

一般例子(字符串A B C或D,概率为.1 .2 .3 .4):

std::numeric_limits::max

具体例子:

std::numeric_limits::max

答案 1 :(得分:1)

显然你希望9次出现35次,其余次要出现0次 - 但是你希望9分是均匀分布的。这很容易用随机播放。

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