例如,
函数可以类似于def randabu(n、.25、.34、.25、.25):
其中n是要生成的字符串的长度,以下数字是A、B、C、D的期望概率。
我想这很简单,但是我在创建工作程序时遇到了困难。任何帮助都将不胜感激。

最佳答案

这是选择单个加权值的代码。你应该可以从这里拿走。它使用bisectrandom来完成工作。

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/

10-12 22:12