繁体   English   中英

从 R 中的均匀分布中找出十进制数的偶数或奇数?

[英]Find the even or odd of decimal number from uniform distribution in R?

很明显,R 中的runif()命令创建了具有均匀分布的随机数。 假设我想创建 100 个具有 min=0 和 max=1 的均匀分布的随机变量,那么您将得到 100 个十进制数字。 有没有办法计算这些十进制数字中有多少是赔率甚至是 R ? 默认情况下,我知道有一种方法可以让整数通过 R 计算偶数或奇数。

让我们暂时假设您想询问 runif(1) 的小数点右侧的 16 位数字可能是多少。 为什么我选择第 16 位? 因为这是 R 浮点运算的机器精度限制:

 .Machine$double.eps
[1] 2.220446e-16

只需将 runif(.) 的结果除以该数字并以字符表示形式交付:

> as.character( print(runif(1) * 1/.Machine$double.eps, signif=16) )
[1] 3.488493e+15
[1] "3488493498007552"

这将为您提供此类数字的第 16 位:

> strsplit( as.character( print(runif(1) * 1/.Machine$double.eps, signif=16) ),"")[[1]][16]
[1] 3.742119e+15
[1] "0"

我怀疑这个过程中有一些我不完全理解的东西,因为当我在第 16 位时,我得到的结果有一半是NA

> table(sapply( sapply( as.character(myrunif * 1/.Machine$double.eps, signif=16) , strsplit, split=""), "[", 15) )

 0  1  2  3  4  5  6  7  8  9 
14  6 10  9 12  7 22  5  8  4 
> table(sapply( sapply( as.character(myrunif * 1/.Machine$double.eps, signif=16) , strsplit, split=""), "[", 16) )

 0  2  4  6  8 
19 16 19 15 10 

让我想知道你的数学教授是否分配了这个问题来让你达到这一点?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM