Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How is the lagged fibonacci generator random?

Tags:

c

random

numbers

I dont get. If it has a fixed length, choosing the lags and the mod over and over again will give the same number, no?

like image 850
chester.boo Avatar asked Mar 02 '10 04:03

chester.boo


2 Answers

To be precise, the lagged Fibonacci is a pseudo-random number generator. It's not true random, but it's much better than, say, the more commonly used linear congruential generator (the standard generator for C++, Java, etc). I'm not sure why you think it will give the same number all over again, but it's true that like all pseudo-random number generator, it has a period after which the sequence of numbers will repeat again.

The multiplicative LFG has a period of (2^k - 1)*2^(M-3). For practical parameters, this is actually quite huge (LCG's period is only M).

The only catch with LFG is that the initialization procedure is very complex, and the mathematics behind it is incomplete. It's best to consult the literature for good choice of parameters and recommended procedure for proper seeding.

As an illustration, a multiplicative LFG with parameters (j=31, k=52) and modulus m=2^32 is seeded with an array of 52 32-bit numbers.


Additional references:

  • http://sprng.fsu.edu/Version4.0/generators.html

    More details on this generator and the seeding algorithms can be found in papers by Mascagni, et al.

like image 159
polygenelubricants Avatar answered Sep 30 '22 06:09

polygenelubricants


It's not random, its pseudorandom

From this http://en.wikipedia.org/wiki/Lagged_Fibonacci_generator

Lagged Fibonacci generators have a maximum period of (2^k - 1)*2^(M-1) if addition or subtraction is used, and (2^k-1) if exclusive-or operations are used to combine the previous values. If, on the other hand, multiplication is used, the maximum period is (2^k - 1)*2^(M-3), or 1/4 of period of the additive case.

So, given a certain seed value, the sequence of output values is predictable and repeatable, and it has a cycle. It will repeat if you wait long enough - but the cycle is quite large.

For an observer that doesn't know the seed value, the sequence appears to be quite random so it can be useful as a source of "randomness" for simulations and other situations where true randomness isn't required.

like image 33
John Knoeller Avatar answered Sep 30 '22 05:09

John Knoeller