Python, NumPy and R all use the same algorithm (Mersenne Twister) for generating random number sequences. Thus, theoretically speaking, setting the same seed should result in same random number sequences in all 3. This is not the case. I think the 3 implementations use different parameters causing this behavior.
R >set.seed(1) >runif(5) [1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819
Python In [3]: random.seed(1) In [4]: [random.random() for x in range(5)] Out[4]: [0.13436424411240122, 0.8474337369372327, 0.763774618976614, 0.2550690257394217, 0.49543508709194095]
NumPy In [23]: import numpy as np In [24]: np.random.seed(1) In [25]: np.random.rand(5) Out[25]: array([ 4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01, 1.46755891e-01])
Is there some way, where NumPy and Python implementation could produce the same random number sequence? Ofcourse as some comments and answers point out, one could use rpy. What I am specifically looking for is to fine tune the parameters in the respective calls in Python and NumPy to get the sequence.
Context: The concern comes from an EDX course offering in which R is used. In one of the forums, it was asked if Python could be used and the staff replied that some assignments would require setting specific seeds and submitting answers.
Related:
- Comparing Matlab and Numpy code that uses random number generation From this it seems that the underlying NumPy and Matlab implementation are similar.
- python vs octave random generator: This question does come fairly close to the intended answer. Some sort of wrapper around the default state generator is required.