Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a maximum character limit to random seed?

Is there a maximum number of characters (and therfore value) to the seed in Python?

import random
random.seed(13) # fine
random.seed(1234567890) # also fine
random.seed(31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989)
# also fine

I'm not sure why someone would pick such a high value, but I just want to know if has a limit.

like image 219
Ghoul Fool Avatar asked Jan 29 '18 14:01

Ghoul Fool


People also ask

What is a good random seed number?

As it turns out, programmers prefer to keep it simple by seeding with 0 in the vast majority of times, followed by 1, then 1234. Interestingly, there seems to be some preferences of random seeds by language.

What does NP random seed 42 mean?

The numpy random seed is a numerical value that generates a new set or repeats pseudo-random numbers. The value in the numpy random seed saves the state of randomness. If we call the seed function using value 1 multiple times, the computer displays the same random numbers.

How does random seed work?

Seed function is used to save the state of a random function, so that it can generate same random numbers on multiple executions of the code on the same machine or on different machines (for a specific seed value). The seed value is the previous value number generated by the generator.

What does NP random seed 101 do?

The np. random. seed function provides an input for the pseudo-random number generator in Python. It allows us to provide a “seed” value to NumPy's random number generator.


1 Answers

There is no max limit, but the input is eventually truncated to 20,000 bits.

Even if you don't understand the algorithm (I don't), you can follow along in the source code.

First, CPython splits the input into 32-bit chunks, and creates a bytearray out of them: https://github.com/python/cpython/blob/55edd0c185ad2d895b5d73e47d67049bc156b654/Modules/_randommodule.c#L258-L293

Then, the Mersene Twister PRNG is seeded with the number 19,650,218, after which some mathematical stuff happens that is well above my understanding: https://github.com/python/cpython/blob/55edd0c185ad2d895b5d73e47d67049bc156b654/Modules/_randommodule.c#L172-L196

But in the midst of all that action, notice this line: https://github.com/python/cpython/blob/55edd0c185ad2d895b5d73e47d67049bc156b654/Modules/_randommodule.c#L180

Anything after the Nth element is never looped over, and therefore effectively discarded. In this case is N is 624 (it's a magic constant: https://github.com/python/cpython/blob/55edd0c185ad2d895b5d73e47d67049bc156b654/Modules/_randommodule.c#L76), so no more than 625 * 32 = 20,000 input bytes are used.

Since the comment in the code says "from the right", we will take them at their word (this is all pretty far above my head, so I'm in no position to question them). Therefore I feel confident enough to conclude that the rightmost 20,000 bits of the input are used, and the rest discarded.

That said, I imagine the definition of "rightmost" is platform-dependent, so it's probably not behavior you should rely on.

like image 90
shadowtalker Avatar answered Oct 06 '22 00:10

shadowtalker