Link to home
Start Free TrialLog in
Avatar of jsteve
jsteve

asked on

Random Number + Triangular Distribution

I need to generate a series of random numbers based on a TRIANGULAR DISTRIBUTION. Preference would be not to utilise the inbuilt Rnd function
Avatar of AzraSound
AzraSound
Flag of United States of America image

what do you mean by a triangular distribution?
Avatar of wsh2
wsh2

Why not the Rnd function? Its statistically appropriate and built in. The only statistical fault it has is that first you have to seed it.. but.. ALL random number genrators have to do that. As such.. there is no difference between the VB Rnd and anything else on the market.. <smile>.

As to the Triangular Distribution.. if you think I'm gonna blow the dust off of my old Statistic books.. you got another think coming.. <lol>. Let's see some empirical formulae.. <smile>.
Why not

Dim N As Single
Randomize(0, N)
What is the shape of the triangular distribution.? A right triangle with a positive slope? A symetrical triangle with a peak at the midpoint? or?

The way to generate your distribution is to write an equation for Y vs. X. A triangle will have to be in segments. Integerate this and get a funtion of the integral of Y vs X. Normalize the Y values so they sum to 1. Then using the rnd function, generate a number from 0 to 1. Use this as a Y value and determine the related value for X from the equation of the normalized integral of Y vs. X.
A symterical triangular distribution that goes from X1 to X2 with a peak at (X1+X2)/2 (i.e. the midpoint) can be formed by the sum of two uniform distributions that go from X1/2 to X2/2. Each of these can be easily generated from the VB rnd function that gives a uniform distribution from 0 to 1 by multiplying and adding a constant to a variable formed by the rnd function.

Try the following code:

 Z1 = 1/2(X1 + rnd(X2-X1))
 Z2 = 1/2(X1 + rnd(X2-X1))
 Z3 = Z1 + Z2

Z3 should be a random variable with a symetrical triangular distribution from X1 to X2 with a peak at (X1 + X2)/2.

If you want a different triangular distribution, define its shape and I will try to provide some code.
Avatar of jsteve

ASKER

Adjusted points from 150 to 200
Avatar of jsteve

ASKER

Almost there. The distribution that I will be using is not symetrical. Could you provide the code. I will increase the points to 200.

Thanks
I need the values describing the triangle. What are the 3 X values for
the begining of the triangle, the peak, and the end point. I don't need the Y values, since I will assume the triangle area corresponding to the probability must sum to one.

If you provide these I think I can give code to do this. But it will use the VB rnd function somewhere in the code.  
ASKER CERTIFIED SOLUTION
Avatar of MinnEE
MinnEE

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Calculate mean and standard deviation of triangular pdf distribution.

Let a = lowest value in distribution
    b = peak of distribution
    c = largest value in distribution

Then
 Mean = (a + b + c)/3  

Let
 V = (c^3-a^3+3*b*(c^2-a^2))/(9*(c-a))  
 W = ((b-a)^3+(c-b)^3)/(18*(c-a))      

Then
 Std Dev = Sqrt(V + W - Mean^2)  
 

Derived by RJP
RJPetsch @aol.com