Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Random number generator

  1. Jul 5, 2011 #1
    hello , i wanted to get a random number generator for colored as well as white noise. all numbers in the range should be equally likely to be produced.. ie, say within 1-100, 50 shouldnt hav an extra high probability. on the net i found this fortran program.

    when i run it and plot the random numbers , i see that more numbers are clustered at the mean. gaussian sort of distribution.

    can i get some where or some how a flat distribution ??
  2. jcsd
  3. Jul 5, 2011 #2
    You want the good old regular random generator that produces a flat distribution. I don't know what it's called in fortran, but random() is a good bet. As you've noticed, the one you picked makes a "normal" or gaussian distribution which is useful for simulating test scores and stuff like that.
  4. Jul 5, 2011 #3


    User Avatar
    Homework Helper

    If you don't need a huge number of random numbers, you can download one of those programs that quicky generates e or pi to millions of digits with an optional binary output, then use that binary file as large array of random numbers. I used apfloat's (do a web search) aptest program to generate pi in hex, then converted that to binary with my own program.

    On a side note, if you wnat a Gausian (normal) distribution, based on evenly distributed random numbers, you can sum them up in groups of 8 to get a good approximate bell curve. Summing 2 two at a time will produce a triangle shape curve with a peak in the middle. Summing 3 or more will start to produce a bell like curve, and with 8 at a time or more, it starts to get pretty close.
  5. Jul 6, 2011 #4
    thanks.. but i already have random number generator for 'white noise'.. if any one has used 'colored noise' random number generator in his/her project or work, then plz let me know where i can find that program. thanks..
  6. Jul 6, 2011 #5
    in c++

    Code (Text):
    #include <iostream>
    #include <ctime>
    #include <cstdlib>

    using namespace std;

    int main() {
        int x;
        srand((unsigned) time(NULL));
        x = (rand() %100) + 1;
        cout << x << endl;
    x = (rand() %100) + 1 => you can change the "100" into any number you want to be the highest possible number to generate - min number. You also can manipulate the min num by change the "1" , into the min number + 1 , ex : if the range that you want is 53 until 100 => x = (rand() %47) +54;
  7. Jul 6, 2011 #6


    User Avatar
    Science Advisor
    Gold Member

    I don't understand what you are asking for. If you want "all numbers in the range should be equally likely to be produced", that is white noise. If you want "coloured noise", then you don't want a uniform distribution.
  8. Jul 7, 2011 #7
    @ Dr. greg, u mean colored noise ( having auto-correlation ) is not uniform ? can u plz explain me y it shouldnt be uniform ? may b u can take the example of producing say 10 random numbers between 1-100, which are related according to some auto correlation function. thank you. i am having problem in visualizing this colored noise. plz help.
  9. Jul 7, 2011 #8
    @ kevin : i can produce random numbers by multiple methods. i was talking about a particular type of random numbers.. thanks ne ways.. :)
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook