[R] Help creating the IBM Randu function

Duncan Murdoch murdoch.duncan at gmail.com
Mon Aug 14 22:10:24 CEST 2017


On 14/08/2017 2:18 PM, Huzefa Khalil wrote:
> Hi Martin,
>
> The corrected function would be
>
> RANDU <-  function(num) { return ((65539*num)%%(2^31)) }
>
> You forgot the brackets for the return function.
> Hence, what was returned was always (65539 * num)

Yes, this is one disadvantage of having a return function rather than 
reserved word.

It is also an argument for avoiding the use of return(); Martin's 
function could be written as

RANDU <-  function(num) { (65539*num)%%(2^31) }

or even

RANDU <-  function(num) (65539*num)%%(2^31)

since the braces aren't needed when a function body has only a single 
statement.

Duncan Murdoch

>
>
> On Mon, Aug 14, 2017 at 12:49 PM, Martin Møller Skarbiniks Pedersen
> <traxplayer at gmail.com> wrote:
>> Dear all,
>>
>>   I am trying to learn functions in R and 3D plotting so I decided to try
>> to plot
>> the famous bad PRNG Randu from IBM(1).
>>    However something is not correct in the function I have created.
>>    First I define the function RANDU like this:
>>
>>> RANDU <-  function(num) { return (65539*num)%%(2^31) }
>>
>> and test that it works for a seed of 1:
>>> RANDU(1)
>> [1] 65539
>>
>> but if I want the next value in the sequence I get this number.
>>> (65539*65539)%%(2^31)
>> [1] 393225
>>
>> However using the RANDU function twice doesn't give the same result as
>> above.
>>
>>> RANDU(RANDU(1))
>> [1] 4295360521
>>
>> I expect these two values to be the same but that is not the case.
>> 393225 should be the correct.
>>
>> I guess it might be something with local vs. global environment ?!
>>
>> Please advise and thanks.
>>
>> Regards
>> Martin M. S. Pedersen
>>
>> (1) https://en.wikipedia.org/wiki/RANDU
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
>
>



More information about the R-help mailing list