生成字符串的加权选择

时间:2014-01-18 17:41:59

标签: python

我正在尝试编写一个代码来生成长度为l的随机数,每个字符由一个字母及其概率选择组成,其中百分比总和为100.例如:如果我给Random(10,[("X",50),("Y",40),("Z",10)])应该给出我"yxxzyyxzzx"即任意方式的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

1 个答案:

答案 0 :(得分:0)

一种天真的做法(我实际上不确定这在统计上是如何工作的)就是简单地填充X,Y和Z对象的100个元素的列表,然后随机挑出一些元素。这是你想要的吗?你可以明显地发现这根本不是很节省空间,大多数人都在想我是否对你正在寻找的东西有所了解(我更喜欢这个是在评论中但是我不能发表评论评论)。