[英]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.