例如,
函数可以类似于def randabu(n、.25、.34、.25、.25):
其中n是要生成的字符串的长度,以下数字是A、B、C、D的期望概率。
我想这很简单,但是我在创建工作程序时遇到了困难。任何帮助都将不胜感激。
最佳答案
这是选择单个加权值的代码。你应该可以从这里拿走。它使用bisect和random来完成工作。
from bisect import bisect
from random import random
def WeightedABCD(*weights):
chars = 'ABCD'
breakpoints = [sum(weights[:x+1]) for x in range(4)]
return chars[bisect(breakpoints, random())]
这样称呼它:
WeightedABCD(.25, .34, .25, .25)
。编辑:下面是一个即使权重不等于1.0的版本:
from bisect import bisect_left
from random import uniform
def WeightedABCD(*weights):
chars = 'ABCD'
breakpoints = [sum(weights[:x+1]) for x in range(4)]
return chars[bisect_left(breakpoints, uniform(0.0,breakpoints[-1]))]
关于python - 我需要一个Python函数,当给出所需的字符概率时,该函数将输出4个不同字符的随机字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/744127/