Good Random Number Generator

This is a discussion on Good Random Number Generator within the C Programming forums, part of the General Programming Boards category; Hi, Im using the Monte Carlo method to get an estimate of Pi. I generate numbers between 0.0 and 1.0, ...

  1. #1
    Microsoft. Who? MethodMan's Avatar
    Join Date
    Mar 2002
    Posts
    1,198

    Good Random Number Generator

    Hi,

    Im using the Monte Carlo method to get an estimate of Pi.

    I generate numbers between 0.0 and 1.0, using the following function (similar to the one in the FAQ)

    Code:
    double generate_rand(double min, double max)
    {
    
      static int Init = 0;
      double rc;
      
      if (Init == 0)
      {
        srand(time(NULL));
        Init = 1;
      }
       rc =  (rand() / (RAND_MAX + 1.0) * (max - min) + min);
       return rc;
    }
    The estimation of pi depends on the quality of the random number generator, I was wondering if there is any way to make my function generate 'better' random numbers?
    -MethodMan-

    Your Move:Life is a game, Play it; Life is a challenge, Meet it; Life is an opportunity, capture it.

    Homepage: http://www.freewebs.com/andy_moog/home.html

  2. #2
    Just Lurking Dave_Sinkula's Avatar
    Join Date
    Oct 2002
    Posts
    5,006
    >I was wondering if there is any way to make my function generate 'better' random numbers?

    http://www.stanford.edu/~blp/writings/clc/random.html ?
    7. It is easier to write an incorrect program than understand a correct one.
    40. There are two ways to write error-free programs; only the third one works.*

  3. #3
    Registered User
    Join Date
    Aug 2003
    Posts
    470
    You could use a 64bit random number generator. You can build one by using 64-bit numbers and bit-shifting 24-bit random digits from rand().

  4. #4
    Registered User
    Join Date
    Jun 2004
    Posts
    722
    You could combine rand with XORs. As more, as better.
    Code:
    int cnt;
    int res = rand();
    for(cnt=rand()&0x07;cnt>=0;cnt--)
        res = res ^ rand();
    But wouldn't be any good algorithm... just to clean your hand from time to time
    Last edited by xErath; 11-17-2004 at 09:54 PM.

  5. #5
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    22,181
    Take a look at the Mersenne Twister pseudo-random number generator.
    C + C++ Compiler: MinGW port of GCC
    Version Control System: Bazaar

    Look up a C++ Reference and learn How To Ask Questions The Smart Way

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Random Number Generator Class
    By abachler in forum Windows Programming
    Replies: 4
    Last Post: 09-03-2008, 09:30 AM
  2. Random number generator
    By rehan in forum C++ Programming
    Replies: 1
    Last Post: 02-25-2008, 02:14 AM
  3. Issue w/ Guess My Number Program
    By mkylman in forum C++ Programming
    Replies: 5
    Last Post: 08-23-2007, 02:31 AM
  4. how to link random number generator with cpu?
    By chris285 in forum C++ Programming
    Replies: 5
    Last Post: 04-28-2003, 06:26 AM
  5. Seeding Random Number Generator
    By zdude in forum C++ Programming
    Replies: 2
    Last Post: 09-05-2002, 04:10 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21