[R-pkg-devel] Change in normal random numbers between R 3.5.3 and R 3.6.0
Martin Maechler
m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Fri May 10 14:55:38 CEST 2019
>>>>> Ulrike Grömping
>>>>> on Fri, 10 May 2019 06:39:39 +0200 writes:
> Mark,
> I used
> if (getRversion()>="3.6.0") RNGkind(sample.kind="Rounding")
> And that works. Actually, using rnorm afterwards also
> yields the same random numbers.
Yes, "of course", 'sample.kind' was only introduced into 3.6.0.
We had always recommended
RNGversion("3.5.0")
possibly wrapped in suppressWarnings().
That *does* work in old and new versions of R.
Note that in R >= 3.6.0 , e.g., inside your if(.) { ** }
you could also use set.seed(<n>, sample.kind="Rounding")
Martin
> My question arose from the fact that I confused myself about the noLD output I was supposed to reproduce. Therefore, my problem should be entirely explained by Duncan Murdoch's initial explanation: the sample() change does not only lead to different results in discrete sampling but also to different results from random number calls for other functions (like rnorm)
*IFF* callled after sample() [etc].
So yes, do call RNGversion("3.5.0")
before set.seed() before the first call to sample() / sample.int()
or functions using those [or 'rwilcox()', see its help in R >= 3.6.0!].
Martin
> Best, Ulrike
> Am 10.05.2019 um 04:58 schrieb R. Mark Sharp:
>> I was dealing with a similar issue but in the context of getting the same unit test code to work on multiple versions of R in a Travis-CI build. It seems RNGkind(sample.kind="Rounding”) does not work prior to version 3.6 so I resorted to using version dependent construction of the argument list to set.seed() in do.call().
>>
>> I better solution will be greatly appreciated.
>>
>> #' Work around for unit tests using sample()
>> #'
>> #' @param seed argument to \code{set.seed}
>> set_seed <- function(seed = 1) {
>> version <- as.integer(R.Version()$major) + (as.numeric(R.Version()$minor) / 10.0)
>> if (version >= 3.6) {
>> args <- list(seed, sample.kind = "Rounding")
>> } else {
>> args <- list(seed)
>> }
>> suppressWarnings(do.call(set.seed, args))
>> }
>>
>> Mark
>>
>> R. Mark Sharp, Ph.D.
>> Data Scientist and Biomedical Statistical Consultant
>> 7526 Meadow Green St.
>> San Antonio, TX 78251
>> mobile: 210-218-2868
>> rmsharp using me.com
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>> On May 9, 2019, at 12:45 PM, Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
>>>
>>> On 09/05/2019 12:43 p.m., Ulrike Grömping wrote:
>>>> Hmmmh, but does that also apply if the sample.kind has been set to the
>>>> old version? I.e., would
>>>> if (getRversion()>="3.6.0") RNGkind(sample.kind="Rounding")
>>>> val <- 10
>>>> set.seed(val)
>>>> discard <- sample(1000, 100)
>>>> rnorm(36)
>>>> produce the same normal random numbers in 3.5.3 and 3.6.0? I would have
>>>> expected it to, but it seems to produce the same normal random numbers
>>>> as R version 3.6.0 in the previous version of the test code without the
>>>> RNGkind call.
>>> I'm not seeing that, but I'm not using the exact versions you tested. If I run your code in "R version 3.5.2 (2018-12-20)" and "R Under development (unstable) (2019-05-02 r76454)" I get this output from both:
>>>
>>>> if (getRversion()>="3.6.0") RNGkind(sample.kind="Rounding")
>>>> val <- 10
>>>> set.seed(val)
>>>> discard <- sample(1000, 100)
>>>> rnorm(36)
>>> [1] -0.4006375 -0.3345566 1.3679540 2.1377671 0.5058193 0.7863424 -0.9022119 0.5328970 -0.6458943 0.2909875 -1.2375945
>>> [12] -0.4561763 -0.8303227 0.3401156 1.0663764 1.2161258 0.7356907 -0.4812086 0.5627448 -1.2463197 0.3809222 -1.4304273
>>> [23] -1.0484455 -0.2185036 -1.4899362 1.1727063 -1.4798270 -0.4303878 -1.0516386 1.5225863 0.5928281 -0.2226615 0.7128943
>>> [34] 0.7166008 0.4402419 0.1588306
>>>
>>> Okay, I just installed 3.6.0, and I get the same values there. I don't see a Mac binary for 3.5.3, so I can't test that one.
>>>
>>> Duncan Murdoch
>>>
>>> ______________________________________________
>>> R-package-devel using r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
> --
> ##############################################
> ## Prof. Ulrike Groemping
> ## FB II
> ## Beuth University of Applied Sciences Berlin
> ##############################################
> ## prof.beuth-hochschule.de/groemping
> ## Phone: +49(0)30 4504 5127
> ## Fax: +49(0)30 4504 66 5127
> ## Home office: +49(0)30 394 04 863
> ##############################################
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
More information about the R-package-devel
mailing list