[Scilab-users] Is there a way to do it with Matrix Operations?

Heinz Nabielek heinznabielek at icloud.com
Mon Sep 25 14:03:05 CEST 2017


Dear colleagues:

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.

N=100;X=grand(7,N,'def');
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;
and one typical sample run yields this
C  =
   15.    9.     6.     12.    8.     12.    10.  
   20.    26.    38.    20.    23.    26.    24.  
   6.     7.     4.     7.     5.     10.    4.   
   38.    39.    32.    37.    48.    30.    39.  
   21.    19.    20.    24.    16.    22.    23.

However, the for and while loops will be terribly inefficient and this is not good for large scale Monte-Carlo simulations.

Is there a way to do it with Matrix Operations?

Best greetings
Heinz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20170925/56ea8555/attachment.htm>


More information about the users mailing list