Easy question with probability
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Steven
am 7 Dez. 2011
Beantwortet: Roger Stafford
am 18 Mär. 2017
Hi,
Let's say
P = [0.1 0.3 0.4 0.2]
X = [1 2 3 4]
where P(n) is the probability to select the X(n) element. I wish to make a function that select an "random" element of X according to its probability, like
f = myfun(P,X)
>> f = 2
thx a lot
0 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 7 Dez. 2011
function F = myfun(P,X)
x = cumsum([0 P(:).'/sum(P(:))]);
x(end) = 1e3*eps + x(end);
[a a] = histc(rand,x);
F = X(a);
5 Kommentare
Oleg Komarov
am 7 Dez. 2011
Andrei's function should read:
function F = myfun(P,X)
p = cumsum([0; P(1:end-1).'; 1+1e3*eps]);
[a a] = histc(rand,p);
F = X(a);
Weitere Antworten (1)
Roger Stafford
am 18 Mär. 2017
Also a little late, this also works:
C = cumsum(P);
f = X(1+sum(C(end)*rand>C));
0 Kommentare
Siehe auch
Kategorien
Mehr zu Performance and Memory finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!