2014-01-18 3 views
1

Я пытаюсь написать код для генерации случайных чисел длины l каждая из которых состоит из одной буквы и его выбора вероятности, где сумма в процентах до 100. Например: Если я дам Random(10,[("X",50),("Y",40),("Z",10)]) должен дать мне "yxxzyyxzzx" т.е. 10 случайных чисел любым способом (это не должно быть 50% X и 40% Y и 10% Z, а только то, что сумма должна быть 100 (50 + 40 + 10)). Точно так же Random(5,[("X",50),("Y",40),("Z",10)]) должен дать мне "XXYZZ"Генерирование Weighted Выбор струны

Я попытался следующий код:

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


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

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

Вы уже посмотрели взвешенные случайные ответы на выбор в другом месте здесь? –

ответ

0

Наивный способ сделать это (я на самом деле не знаю, как это будет работать статистически), чтобы просто заполнить список 100 элементов объектов X, Y и Z, а затем произвольно выбирайте несколько элементов. Это то, что вы хотите? Очевидно, вы видите, что это совсем не очень экономично, в основном, интересно, получаю ли я общее представление о том, что вы ищете (я бы предпочел, чтобы это было в комментарии, но я не могу опубликовать комментарии еще).