Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: geometric random distributions

by Moron (Curate)
on Jun 08, 2007 at 07:18 UTC ( #619971=note: print w/replies, xml ) Need Help??


in reply to geometric random distributions

It's usually a trivial matter to create a geometric random number generator. For example, this expression will produce a random number in the range 0 to 1 with a (update co-)sinusoidal probability density function:
use Math::Trig; # to get PI my $sinerand = sin( rand() * PI );
(update: the probability density function of a random number generator is the derivative of the generating function, so in this case a cosine density shape is therefore being produced.)

A simple integration is also needed for the triangular distribution: Its probability density function has a smooth gradient so the generator satisfies the equation dy/dx = gradient. So integrating that straight line function, gives the generating function: 1 - (rand() ** (1+gradient))) would give a random number with a triangular probability density function coming out.

The reason the normal distribution is an exception deserving a special method is that its cumulative distribution function isn't analytic but can only be expressed as an integral equation. (Update: or as a Taylor Series.) You would need to achieve an impossible integration (in closed form) to compute the generating function that can produce a normal probability density function as its output. In practice some kind of approximation has to be used (Update: usually by taking the first few terms of the infinite Taylor series - although I have to say the module either doesn't or doesn't obviously do that!)

__________________________________________________________________________________

^M Free your mind!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://619971]
help
Chatterbox?
[usemodperl]: no that's not it at all, meant safe for perl people, to not be hounded by weirdos obsessed with things like... whitespace :-)
[choroba]: I'm definitely not obsessed with whitespace, I rate myself among Perl people, and I haven't noticed any hounding
[marto]: "no it's not that"...."weirdos "...
[marto]: List EXE_FILES installed by CPAN so a couple of people suggest that your code looks obfuscated. I'd have to ageree, from the perspective of those who can't follow all of that one liner, it doesn't read well
Veltro is a weirdo, obsessed with whitespace
[marto]: to use the word "obsession" when so few people have said so little about it is grasping at staws
marto wishes tye was around, he's so much better at this sort of thing
usemodperl likes tye!
usemodperl tye  too
[choroba]: Re^3: LiBXML: New markup while preserving earlier tags? would benefit from a couple of test cases

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (8)
As of 2018-06-24 16:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?



    Results (126 votes). Check out past polls.

    Notices?