On 02/01/2009 2:45 PM, Stavros Macrakis wrote:> runif appears to give 31 bits of precision, but this isn't mentioned
> in the documentation page. The R numeric type supports 53 digits of
> precision, and other numeric functions (sin, etc.) give full-precision
> results. So I'd think that either runif should give full precision or
> its documentation should mention this limitation.
It refers to the .Random.seed page for details, and that page mentions
the limitation to at most 2^32 different values for most of the generators.
>
> #integers
> table(runif(10000,-2^30,2^30) %% 1)
> 0 0.5
> 4972 5028
Your interval is 2^31 units long, and you're getting values on the
integers and halfway between, so that looks like 2^32 bits, not 2^31.
> #natural numbers
>> table(runif(10000,0,2^31) %% 1)
> 0 0.5
> 4956 5044
> #fractions
> table((r<-runif(10000,0,1)*2^31)-floor(r))
> 0 0.5
> 5021 4979
Same here.
Duncan Murdoch
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.