Difference between revisions of "Likelihood"
(→Random Numbers in MATLAB) |
(→Random Numbers in MATLAB) |
||
Line 7: | Line 7: | ||
This produces a random number. Repeat several times. Continue typing the material in boxes into the MATLAB prompt. | This produces a random number. Repeat several times. Continue typing the material in boxes into the MATLAB prompt. | ||
− | + | help rand | |
Returns help for the rand command. We'll discuss this help file. Try | Returns help for the rand command. We'll discuss this help file. Try | ||
− | + | rand(3) | |
− | + | rand(3,2) | |
− | + | rand(3,2,2) | |
These commands allow you to create arrays of random numbers without loops. Compare | These commands allow you to create arrays of random numbers without loops. Compare | ||
− | + | A = rand(10000,1); | |
With | With | ||
− | + | for i = 1:10000 | |
− | + | B(i,1) = rand; | |
− | + | end | |
Note however there is really two issues with the second method: first, we could have avoided the loop, and second, the we successively built a larger and larger array without first initializing it. Now that B is defined, repeating the second set of command will go much faster, but still not as fast as avoiding the loop. | Note however there is really two issues with the second method: first, we could have avoided the loop, and second, the we successively built a larger and larger array without first initializing it. Now that B is defined, repeating the second set of command will go much faster, but still not as fast as avoiding the loop. | ||
Line 29: | Line 29: | ||
Note semicolons suppress a command's insistence on displaying the result on the screen. Try it without the semicolon: | Note semicolons suppress a command's insistence on displaying the result on the screen. Try it without the semicolon: | ||
− | + | A = rand(10000,1) | |
Finally, if you are running a model that uses random numbers it is useful to be able to reproduce simulations. This can be done because computer random numbers are really pseudo-random numbers. The number returned the the generator is completely determined by the "seed" used to initialize the generator and the number of times that the generator has been used since the last initialization. Try: | Finally, if you are running a model that uses random numbers it is useful to be able to reproduce simulations. This can be done because computer random numbers are really pseudo-random numbers. The number returned the the generator is completely determined by the "seed" used to initialize the generator and the number of times that the generator has been used since the last initialization. Try: | ||
− | + | rand('state',0); | |
− | + | rand | |
− | + | rand | |
− | + | rand | |
− | + | rand('state',1); | |
− | + | rand | |
− | + | rand | |
− | + | rand | |
The command "clock" can be used to set the seed in "random" way. Use "up arrow" to repeat a command. | The command "clock" can be used to set the seed in "random" way. Use "up arrow" to repeat a command. | ||
− | + | clock | |
− | + | clock | |
− | + | clock | |
− | + | sum(100*clock) | |
− | + | sum(100*clock) | |
− | + | sum(100*clock) | |
− | + | rand('state',sum(100*clock)); | |
− | + | rand | |
− | + | rand | |
− | + | rand('state',sum(100*clock)); | |
− | + | rand | |
− | + | rand | |
If you want a "random" seed and still be able to reproduce your simulations use: | If you want a "random" seed and still be able to reproduce your simulations use: | ||
− | + | s = sum(100*clock); | |
− | + | rand('state',s); | |
− | + | rand | |
− | + | rand | |
− | + | rand('state',s) | |
− | + | rand | |
− | + | rand |
Revision as of 15:38, 23 January 2009
Random Numbers in MATLAB
Start MATLAB and type the following into the MATLAB prompt
rand
This produces a random number. Repeat several times. Continue typing the material in boxes into the MATLAB prompt.
help rand
Returns help for the rand command. We'll discuss this help file. Try
rand(3) rand(3,2) rand(3,2,2)
These commands allow you to create arrays of random numbers without loops. Compare
A = rand(10000,1);
With
for i = 1:10000 B(i,1) = rand; end
Note however there is really two issues with the second method: first, we could have avoided the loop, and second, the we successively built a larger and larger array without first initializing it. Now that B is defined, repeating the second set of command will go much faster, but still not as fast as avoiding the loop.
Note semicolons suppress a command's insistence on displaying the result on the screen. Try it without the semicolon:
A = rand(10000,1)
Finally, if you are running a model that uses random numbers it is useful to be able to reproduce simulations. This can be done because computer random numbers are really pseudo-random numbers. The number returned the the generator is completely determined by the "seed" used to initialize the generator and the number of times that the generator has been used since the last initialization. Try:
rand('state',0); rand rand rand rand('state',1); rand rand rand
The command "clock" can be used to set the seed in "random" way. Use "up arrow" to repeat a command.
clock clock clock sum(100*clock) sum(100*clock) sum(100*clock) rand('state',sum(100*clock)); rand rand rand('state',sum(100*clock)); rand rand
If you want a "random" seed and still be able to reproduce your simulations use:
s = sum(100*clock); rand('state',s); rand rand rand('state',s) rand rand