Random Distribution Number Generator Algorithm

I need to build a random number generator. The number generated should follow some distribution like noemal distribution, Poisson distribution, exponential distribution and so on....
I'm using Visual C++ programming, but I will be appreciate if anybody can just let me know the algorithm.
I have gone through the exact generator I needed in Excel, but I can't get the source code.
Thanx for your help.
ronaldyoongAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
deightonConnect With a Mentor Commented:
Here is exponential for starters, include math.h

double exponential_distribution(double dlamda)
{
     double dprop;

     do
     {          
          dprop = (double) rand() / (double) RAND_MAX;
     }
     while (dprop == 0);

     return -log(dprop) / dlamda;
}


void main()
{


     printf("\nexponential lamda = 3 %lf",exponential_distribution(3));
         
         
}
0
 
nir_aradCommented:
There are specific algorithm tips in
"Simulation Modeling and Analysis", 2nd Edition by Law and Kelton.
If you need something specific - I have the book at hand.

Example:
Bernoulli (p.472)
-----------------
1. Generate U~U(0,1)
2. If U <= p return X = 1. Otherwise return X = 0.


Uniform distribution can be obtained by the C library rand() function.
0
 
deightonCommented:
include stdlib, stdio as well

and do a

// include time.h

srand( (unsigned)time( NULL ) );  

at program start to seed the random number if you want different numbers every time you run the program

0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
deightonCommented:
poisson distribution

long poisson_distribution(double lamda)
{
     double total=0;
     double dprop,dterm;
     long k=0;
     long c;
     
     do
     {
          dprop = (double) rand() / (double) RAND_MAX;
     } while (dprop == 1);

     do
     {
          dterm = (double) exp(-lamda);
          for(c = 1;c <= k ; c++)
          {
               dterm *= lamda / c;                    
          }

          total += dterm;
          k++;
     } while(total < dprop);
     k--;
     
     return k;
}
0
 
yairyCommented:
A 'Real' random number generator is impossible to build with a deterministic machine.




0
 
deightonCommented:
yairy,

I agree that the rand function produces pseudo random numbers, a mathematical sequence that appears to be random, but obviously isn't as such random.  However they are adequate for most tasks,  and it is possible to replicate in c++ anything that excel can do.
0
 
griesshCommented:
I think you forgot this question. I will ask Community Support to close it unless you finalize it within 7 days.
Unless there is objection or further activity,  I will suggest to accept "deighton" comment(s) as an answer.

If you think your question was not answered at all, you can post a request in Community support (please include this link) to refund your points.
The link to the Community Support area is: http://www.experts-exchange.com/jsp/qList.jsp?ta=commspt

Please do not accept this comment as an answer!
======
Werner
0
 
NetminderCommented:
Per recommendation comment force/accepted by

Netminder
Community Support Moderator
Experts Exchange
0
All Courses

From novice to tech pro — start learning today.