如何使用特定概率生成1到100之间的随机数矩阵(40x10000)p1 = Prob(1),p2 = Prob(2),...,p100 = Prob(100)?
答案 0 :(得分:2)
使用权重为randsample
h = 40; w = 10000;
out = reshape( randsample( numel(Prob), h*w, true, Prob ), [h w] );
答案 1 :(得分:1)
如果您没有统计工具箱,则可以手动执行此操作。这样的事情应该有效:
thresholds = cumsum(Prob);
starter = rand(40, 10000);
finalAnswer = starter * 0 + 1; % initialize them all to be 1
for idx = 2:100
finalAnswer(starter > (thresholds(idx - 1)) & starter <= thresholds(idx)) = idx;
end
答案 2 :(得分:0)
使用统计工具箱,您可以创建具有指定概率的多项分布,然后使用随机生成具有所需大小的样本。
使用概率向量Prob
Pd = makedist('Multinomial','Probabilities',Prob);
out = random(Pd,4,10000);