I Generating a random sample with a standard deviation

gamow99
Messages
71
Reaction score
2
I'm trying to write a computer program which generates a random list of numbers but the random numbers form a bell curve, that is, there is a mean and a standard deviation from that mean. I'm not interested in some function that gets the job done, rather I'm trying to understand how do you generate a random list of numbers which are not entirely but conform to a bell curve. I have already done the following in Python:

list5 = [5] * 8
list4 = [4,5,6] * 4
list3 = [3,4,5,6,7] * 2
list2 = [x for x in range(2,9)]
list1 = [x for x in range(1,11)]
list6 = list1 + list2 + list3 + list4 + list5

So in the above 5 appears 8 times more often often 1,2,9,10. 4 times more often than 3 and 4 and twice as often as 4 and 6 which does form a bell curve and then I just select randomly from list 6. But I don't like that solution.
 
Physics news on Phys.org
There are two problems of pseudo-random numbers that can be handled independently. The first is that the series of numbers should have as little detectable autocorrelations as possible. The second is to get the desired sample distribution. If the first problem is solved for generating a uniform distribution of numbers in [0,1), then there are several ways to use that to solve the second problem.

There has been a great deal of work done to solve both problems. An excellent reference is Knuth, The Art of Computer Programming, Vol 2: Seminumerical Algorithms. Chapter 3, Random Numbers. (Knuth's series of books is almost a bible for computer programmers.)

I do not advise you to try your own uniform random number generator unless you are prepared to learn a lot of number theory concepts.
The easiest, most versatile, brute-force method to solve the second problem is to use "rejection sampling". See https://en.wikipedia.org/wiki/Rejection_sampling. For the special case of the normal distribution there are several other techniques. A popular one is to use the Box-Muller transformation (see http://www.design.caltech.edu/erik/Misc/Gaussian.html). Mathworks uses other techniques in their MATLAB normrnd function, which they document reasonably well (see https://www.mathworks.com/company/newsletters/articles/normal-behavior.html )
 
  • Like
Likes WWGD, jim mcnamara, BvU and 1 other person
Suppose, f(x)= f(x,μ,σ) is your curve with known mean (μ) and sd (σ) and f(x)≥0. Find C=∫Xf(x)dx, -∞<x<∞. Draw a 3 digited (say) random number and put a decimal point before it. Let this fraction be R. Find x by solving ∫-∞x f(x)dx/c =R. x is now a sample form f(x).
 
  • Like
Likes FactChecker
ssd said:
Suppose, f(x)= f(x,μ,σ) is your curve with known mean (μ) and sd (σ) and f(x)≥0. Find C=∫Xf(x)dx, -∞<x<∞. Draw a 3 digited (say) random number and put a decimal point before it. Let this fraction be R. Find x by solving ∫-∞x f(x)dx/c =R. x is now a sample form f(x).
If the cumulative distribution function is invertible, this is a great method. It's called the inverse transform method (see https://en.wikipedia.org/wiki/Inverse_transform_sampling )
 
More often than not, inverse function of a CDF is not analytically solvable in terms of simple functions. We have to use a computer program for numerical solution.
 
  • Like
Likes FactChecker
Namaste & G'day Postulate: A strongly-knit team wins on average over a less knit one Fundamentals: - Two teams face off with 4 players each - A polo team consists of players that each have assigned to them a measure of their ability (called a "Handicap" - 10 is highest, -2 lowest) I attempted to measure close-knitness of a team in terms of standard deviation (SD) of handicaps of the players. Failure: It turns out that, more often than, a team with a higher SD wins. In my language, that...
Hi all, I've been a roulette player for more than 10 years (although I took time off here and there) and it's only now that I'm trying to understand the physics of the game. Basically my strategy in roulette is to divide the wheel roughly into two halves (let's call them A and B). My theory is that in roulette there will invariably be variance. In other words, if A comes up 5 times in a row, B will be due to come up soon. However I have been proven wrong many times, and I have seen some...
Back
Top