Good day, The use of "rounding" also doesn't make sense. If The number is halfway between two integers, it is rounded to the nearest even integer.> round(2.5)[1] 2 -------------------------------------- Dario Strbenac University of Sydney Camperdown NSW 2050 Australia
Besides wording of the documentation re truncating vs rounding, there is something peculiar going on with the fractional part of n: > table(sample.int(2.5, 1e6, replace = TRUE)) 1 2 3 399051 401035 199914 > table(sample.int(3, 1e6, replace = TRUE)) 1 2 3 332956 332561 334483 > table(sample.int(2.01, 1e6, replace = TRUE)) 1 2 3 497173 497866 4961 > sessionInfo() R Under development (unstable) (2018-09-17 r75319) Platform: x86_64-apple-darwin17.7.0 (64-bit) Running under: macOS High Sierra 10.13.6 Matrix products: default BLAS: /Users/whuber/R/lib/libRblas.dylib LAPACK: /Users/whuber/R/lib/libRlapack.dylib locale: [1] en_US.UTF-8/UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] fortunes_1.5-4 loaded via a namespace (and not attached): [1] compiler_3.6.0 tools_3.6.0 20.9.18 03:00, Dario Strbenac scripsit:> Good day, > > The use of "rounding" also doesn't make sense. If The number is halfway between two integers, it is rounded to the nearest even integer. > >> round(2.5) > [1] 2 > > -------------------------------------- > Dario Strbenac > University of Sydney > Camperdown NSW 2050 > Australia-- With thanks in advance- Wolfgang ------- Wolfgang Huber Principal Investigator, EMBL Senior Scientist European Molecular Biology Laboratory (EMBL) Heidelberg, Germany wolfgang.huber at embl.de http://www.huber.embl.de My book with Susan Holmes: http://www.huber.embl.de/msmb
FWIW, I suspect this is related to the function R_unif_index that was introduced in src/main/RNG.c around revision 72356, or the way this function is used in do_sample in src/main/random.c. 20.9.18 08:19, Wolfgang Huber scripsit:> Besides wording of the documentation re truncating vs rounding, there is > something peculiar going on with the fractional part of n: > > > table(sample.int(2.5, 1e6, replace = TRUE)) > > ???? 1????? 2????? 3 > 399051 401035 199914 > > > table(sample.int(3, 1e6, replace = TRUE)) > > ???? 1????? 2????? 3 > 332956 332561 334483 > > > table(sample.int(2.01, 1e6, replace = TRUE)) > > ???? 1????? 2????? 3 > 497173 497866?? 4961 > > > sessionInfo() > R Under development (unstable) (2018-09-17 r75319) > Platform: x86_64-apple-darwin17.7.0 (64-bit) > Running under: macOS High Sierra 10.13.6 > > Matrix products: default > BLAS: /Users/whuber/R/lib/libRblas.dylib > LAPACK: /Users/whuber/R/lib/libRlapack.dylib > > locale: > [1] en_US.UTF-8/UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 > > attached base packages: > [1] stats???? graphics? grDevices utils???? datasets? methods?? base > > other attached packages: > [1] fortunes_1.5-4 > > loaded via a namespace (and not attached): > [1] compiler_3.6.0 tools_3.6.0 > > > 20.9.18 03:00, Dario Strbenac scripsit: >> Good day, >> >> The use of "rounding" also doesn't make sense. If The number is >> halfway between two integers, it is rounded to the nearest even integer. >> >>> round(2.5) >> [1] 2 >> >> -------------------------------------- >> Dario Strbenac >> University of Sydney >> Camperdown NSW 2050 >> Australia >-- With thanks in advance- Wolfgang ------- Wolfgang Huber Principal Investigator, EMBL Senior Scientist European Molecular Biology Laboratory (EMBL) Heidelberg, Germany wolfgang.huber at embl.de http://www.huber.embl.de My book with Susan Holmes: http://www.huber.embl.de/msmb
Hi, I have not checked the source code, but I think it is because of banker's round. https://en.wikipedia.org/wiki/Rounding#Round_half_to_even Best regards, Kim -----Original Message----- From: R-devel <r-devel-bounces at r-project.org> On Behalf Of Dario Strbenac Sent: den 20 september 2018 03:00 To: r-devel <r-devel at r-project.org> Subject: Re: [Rd] A different error in sample() Good day, The use of "rounding" also doesn't make sense. If The number is halfway between two integers, it is rounded to the nearest even integer.> round(2.5)[1] 2 -------------------------------------- Dario Strbenac University of Sydney Camperdown NSW 2050 Australia ______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel