Download 3.8 Random Number Generation

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Abuse of notation wikipedia , lookup

Large numbers wikipedia , lookup

Central limit theorem wikipedia , lookup

Addition wikipedia , lookup

Collatz conjecture wikipedia , lookup

Proofs of Fermat's little theorem wikipedia , lookup

Law of large numbers wikipedia , lookup

Elementary mathematics wikipedia , lookup

Transcript
Generating Random
Numbers
Textbook ch.6, pg. 356-367
1
Random Number Generation


rand function (need to include <cmath>)
 i = rand();
 Generates unsigned integer between 0 and
RAND_MAX (usually 32767)
Scaling and shifting
 Examples
•
i = rand() % 6;
generates a number between 0 and 5 (scaling)
•
i = 1 + rand() % 6;
generates a number between 1 and 6 (the “+ 1”
makes the shift by 1)
2
Example Program
#include <iostream>
#include <cmath>
using namespace std;
void main()
{
int i;
cout<<"Generating 10 random integers in the range 05:"<<endl;
for (i=0; i<10 ;i++)
cout<<" "<<rand()%6<<" ";
cout<<endl;
cout<<"Generating 10 random integers in the range 16:"<<endl;
for (i=0; i<10 ;i++)
cout<<" "<<1+rand()%6<<" ";
cout<<endl;
}
3
Example’s Program Output
Generating 10 random integers in the range 0-5:
5 5 4 4 5 4 0 0 4 2
Generating 10 random integers in the range 1-6:
6 6 5 5 6 5 1 1 5 3
4
Shifting and Scaling
•General shifting and scaling
–Number = shiftingValue + rand() % scalingFactor
–shiftingValue = first number in desired range
–scalingFactor = width of desired range
5
Pseudorandom Numbers

Calling rand() repeatedly


Pseudorandom numbers



Gives the same sequence of numbers
Preset sequence of "random" numbers
Same sequence generated whenever program runs
To get different random sequences

Provide a seed value (unsigned integer value)



Like a random starting point in the sequence
The same seed will give the same sequence
srand(seed);

Used before rand() to set the seed
6
Pseudorandom Numbers (ctd’)

OR can use the current time to set the
seed




No need to explicitly set seed every time
srand( time( 0 ) );
The time function returns the current time
in seconds (need to include <ctime>)
Call the above statement ONCE in the
beginning of the main program, before you
call the rand() function.
7
Example Program
#include <iostream.h>
#include <cmath>
#include <ctime>
using namespace std;
void main()
{
int i;
srand(time(0)); //this generates the first seed value
cout<<“Generating 10 random integers in the range 0-5
using time as seed:"<<endl;
for (i=0; i<10 ;i++)
cout<<" "<<rand()%6<<" ";
cout<<endl;
}
8
Example’s Program Output
Generating 10 random integers in the range 0-5
using time as seed:
4 3 5 5 5 2 4 2 4 1
9