<html><body><div>Dear colleagues:<br><br>in an attempt to code the generation of random deviates for a user-defined probability function p=[0.1176471 0.2352941 0.0588235 0.3882353 0.2 ], I spent only a few minutes to write the Scilab code below and it gives me all the solutions (frequency distribution of random numbers) that I need.<br><br>N=100;X=grand(7,N,'def');<br>C=[];for j=1:7;Count(1:5)=0;for k=1:N;i=1;while X(j,k)>P(i);i=i+1;end;Count(i)=Count(i)+1;end;C=[C Count];end;</div><div>and one typical sample run yields this<br>C =<br> 15. 9. 6. 12. 8. 12. 10. <br> 20. 26. 38. 20. 23. 26. 24. <br> 6. 7. 4. 7. 5. 10. 4. <br> 38. 39. 32. 37. 48. 30. 39. <br> 21. 19. 20. 24. 16. 22. 23. <br><br>However, the for and while loops will be terribly inefficient and this is not good for large scale Monte-Carlo simulations.<br><br>Is there a way to do it with Matrix Operations?<br><br>Best greetings<br>Heinz</div></body></html>