Re: [問題] 請問如果不用randsrc 要怎麼寫自製的機 …已回收
寫了一個副程式,應該沒有什麼問題,
給定x為可用的元素值,p為對應之機率,
輸出y之大小由m,n設定,副程式如下。
function y = rand_src(x,p,m,n)
% x = [1 2 3]; % 可用元素值
% p = [0.2 0.6 0.2]; % 元素值之機率
% m = 2; % 輸出y之行數量
% n = 10; % 輸出y之列數量
% ================== 計算 CDF ===================
p_cdf(1) = p(1);
for i = 1:length(p)-1
p_cdf(i+1) = p_cdf(i) + p(i+1);
end
% ===============================================
% =================== 檢查CDF ===================
if p_cdf(end) ~= 1
fprintf('Total probability must be 1, please try again!\n');
return
end
% ================================================
tmp = rand(m,n);
y = zeros(m,n);
y(find(tmp < p_cdf(1))) = x(1);
for i = 2:length(x)
y(intersect(find(tmp > p_cdf(i-1)),find(tmp < p_cdf(i)))) = x(i);
end
※ 引述《franchise (雨)》之銘言:
: 想請問一下...
: 如果不用randsrc(communication toolbox)
: 要怎麼寫出自製的機率分佈函數
: 比如說:
: x={1,2,3}
: p(x=1)=0.1
: p(x=2)=0.3
: p(x=3)=0.6
: 感謝 !!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.178.176