Easy question with probability
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Steven
le 7 Déc 2011
Réponse apportée : Roger Stafford
le 18 Mar 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 commentaires
Réponse acceptée
Andrei Bobrov
le 7 Déc 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 commentaires
Oleg Komarov
le 7 Déc 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);
Plus de réponses (1)
Roger Stafford
le 18 Mar 2017
Also a little late, this also works:
C = cumsum(P);
f = X(1+sum(C(end)*rand>C));
0 commentaires
Voir également
Catégories
En savoir plus sur Performance and Memory dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!