2012-06-12 2 views
1

Как распределить вероятность случайным образом по n значениям в matlab? Если у меня 128 векторов. Я хочу назначить случайную вероятность для всех из них таким образом, что сумма всех из них равна 1.Как распределить вероятность случайным образом для генерации тестовых данных в Matlab?

например. п = 4 p1 = 0,37 p2 = 0,21 p3 = 0 p4 = 0,42

ответ

1

Вы можете просто разделить вектор на сумму из его элементов. Например, для вектора длиной 4 вы можете сделать:

>> v = rand(4, 1); 
>> v = v/sum(v) 

v = 
    0.2951 
    0.3281 
    0.0460 
    0.3308 

>> sum(v) 

ans = 

    1.0000 

Заметьте, я предполагаю, что вы хотите, равномерно распределенные числа, так как вы не утверждаете, что распределение вы хотите в этом вопросе.

+0

Можете ли вы доказать, что результат действительно однородный? То есть результат охватывает с истинным распределением всех случаев четырех чисел, которые суммируются до 1? – Theta30

+0

На самом деле это ложь - см. Ссылку deeves'link в этом вопросе http://stackoverflow.com/questions/2171074/generating-a-probability-distribution? – Theta30