I have a Julia program that sometimes produces different results even if I set Random.seed!(1234)
. What could be the reasons?
Here is one possible reason I have found: In my program, I’m using a function c(x)
from a package C
I installed. This function also could produce slightly different results (say, a difference of 10^(-8)
) for the same input x
and the same Random.seed!
. What I did was something like the following:
using C
Random.seed!(1234)
@show c(x)
Is it because Random.seed!
can’t control the result of the function c
? Or is it due to some other numerical reasons?
Thank you!
What is this package C
? (I couldn’t find it anywhere)
There are many reasons why c(x)
could be independent of the seed,
it could call internally some python, FORTRAN or C code, which is not controlled by the Julia seed.
Even pure Julia code could possibly generate it’s own random numbers internally. (However, I would expect that most packages don’t do that.)
So, without knowing more about the package C
it is difficult to answer.
2 Likes
Pretty much anything, depending on what that package C does (race conditions in threads, calling external code, initializing it its own RNGs, …).
I would debug this by comparing results are various checkpoints in c
.
That said, I don’t think it makes too much sense to worry too much about exact reproducibility of results using randomness; the fact that your numbers come from a particular RNG should not matter too much (if it does, the algorithm is problematic).
1 Like