Can I Get a Flat Distribution with a Random Number Generator?

AI Thread Summary
A user seeks a random number generator that produces a flat distribution for colored and white noise, expressing frustration with a Fortran program that yields a Gaussian distribution. Suggestions include using the random() function in Fortran for uniform distribution or generating large arrays of random numbers from constants like pi. The discussion clarifies that white noise requires uniform distribution, while colored noise involves auto-correlation, which does not align with uniformity. Participants provide code examples in C++ for generating random numbers within a specified range. The conversation highlights the distinction between uniform and colored noise, emphasizing the need for further explanation on the latter.
m~ray
Messages
29
Reaction score
0
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 shouldn't hav an extra high probability. on the net i found this fortran program.
http://fortran.com/gauss_random

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 ??
 
Technology news on Phys.org
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.
 
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.
 
thanks.. but i already have random number generator for 'white noise'.. if anyone has used 'colored noise' random number generator in his/her project or work, then please let me know where i can find that program. thanks..
 
in c++

Code:
#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;
 
m~ray said:
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 shouldn't hav an extra high probability.
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.
 
@ Dr. greg, u mean colored noise ( having auto-correlation ) is not uniform ? can u please explain me y it shouldn't 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. please help.
 
@ kevin : i can produce random numbers by multiple methods. i was talking about a particular type of random numbers.. thanks ne ways.. :)
 
Back
Top