Python 生成字符串的加权选择

Python 生成字符串的加权选择,python,Python,我正试图编写一个代码来生成长度为l的随机数,每个随机数由一个字母及其概率选择组成,其中百分比总和为100。例如:如果我给随机数(10,[(((“X”,50),(“Y”,40),(“Z”,10)],应该给我“yxxzyxzzx”即以任何方式给10个随机数(它不必是X的50%,Y的40%,Z的10%,它的总和应该是100(50+40+10))。同样地,Random(5,[(((“X”,50),(“Y”,40),(“Z”,10)])应该给我“XXYZZ” 我尝试了以下代码: from random i

我正试图编写一个代码来生成长度为l的随机数,每个随机数由一个字母及其概率选择组成,其中百分比总和为100。例如:如果我给
随机数(10,[(((“X”,50),(“Y”,40),(“Z”,10)],
应该给我
“yxxzyxzzx”
即以任何方式给10个随机数(它不必是X的50%,Y的40%,Z的10%,它的总和应该是100(50+40+10))。同样地,
Random(5,[(((“X”,50),(“Y”,40),(“Z”,10)])
应该给我
“XXYZZ”

我尝试了以下代码:

from random import choice
def Random(length,weightedchoice):


   string=""
   for count in range(length):

         string+=weightedchoice([("X",50),("Y", 40), ("Z", 10)])
   return string

做这件事的一种天真的方法(实际上我不确定这在统计学上是如何工作的)是简单地填写一个包含100个X、Y和Z对象元素的列表,然后随机挑选一些元素。这是你想要的吗?你可以明显地看到,这根本不是很节省空间,主要是想知道我是否了解你在寻找什么(我希望这是在评论中,但我还不能发表评论)。

你已经在其他地方看到加权随机选择答案了吗?