From sokol at insa-toulouse.fr  Mon Nov  6 10:29:42 2017
From: sokol at insa-toulouse.fr (Serguei Sokol)
Date: Mon, 6 Nov 2017 10:29:42 +0100
Subject: [Rd] Extreme bunching of random values from runif with
 Mersenne-Twister seed
In-Reply-To: <3d1b6158-d6a6-fdf1-6498-d3b0655b0113@gmail.com>
References: <CA+S-T79BhosJQR7nQkO_Eg3pu7Kvz-0xmUOvsBR5Msa+7W+jow@mail.gmail.com>
 <CAF8bMca0D1ZVsFB40-Pqx3vquuMzUDdaETyRy9oWUm4OCrMyrg@mail.gmail.com>
 <CA+S-T7_DsigtAsj=LBxwoUWNn-2x+R_oDbvGnkDFFTgtnkcRcg@mail.gmail.com>
 <CAF8bMcb-=ijBuXmFpRC+r=ogE+y0rG3MwMvk1kM=mnYgdiWNmg@mail.gmail.com>
 <CA+S-T7_--bJ_xWh+th1KLLf3=JuzS+E6tpiJCMVe=fCGUUNYvg@mail.gmail.com>
 <cd5359ff-ecaf-b998-ef1c-b89d564b9769@gmail.com>
 <3d1b6158-d6a6-fdf1-6498-d3b0655b0113@gmail.com>
Message-ID: <c45a613d-7524-b25e-6ec8-95971e55ad2b@insa-toulouse.fr>

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 at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] Extreme bunching of random values from runif with Mersenne-Twister seed
Serguei Sokol