Le 05/11/2017 à 15:17, Duncan Murdoch a écrit :
On 04/11/2017 10:20 PM, Daniel Nordlund wrote:
Tirthankar,
"random number generators" do not produce random numbers. Any given
generator produces a fixed sequence of numbers that appear to meet
various tests of randomness. By picking a seed you enter that sequence
in a particular place and subsequent numbers in the sequence appear to
be unrelated. There are no guarantees that if YOU pick a SET of seeds
they won't produce a set of values that are of a similar magnitude.
You can likely solve your problem by following Radford Neal's advice of
not using the the first number from each seed. However, you don't need
to use anything more than the second number. So, you can modify your
function as follows:
function(x) {
set.seed(x, kind = "default")
y = runif(2, 17, 26)
return(y[2])
}
Hope this is helpful,
That's assuming that the chosen seeds are unrelated to the function output, which seems unlikely on the face of it. You can certainly choose a set of seeds
that give high values on the second draw just as easily as you can choose seeds that give high draws on the first draw.
To confirm this statement, I did
s2_25=s[sapply(s, function(i) {set.seed(i); runif(2, 17, 26)[2] > 25})]
length(s2_25) # 48990
For memory, we had
length(s25) # 48631 out of 439166
which is much similar length.
So if we take the second or even the 10-th pseudo-random value we can
fall as easily (or as hard) at a seed sequence giving some narrow set.
Serguei.
The interesting thing about this problem is that Tirthankar doesn't believe that the seed selection process is aware of the function output. I would say that
it must be, and he should be investigating how that happens if he is worried about the output, he shouldn't be worrying about R's RNG.
Duncan Murdoch
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel