首页 > 解决方案 > R中的runif(或者我)有什么问题?

问题描述

我正在尝试从均匀分布中生成一个随机变量,该随机变量也取决于随机变量。

理想情况下,我也想z2成为一个随机变量。

例如,

set.seed(123)
#generate first random variable z1
z1 <- runif(10,0,1)
#generate secondrandom variable z2
z2 <- ifelse(z1>= 0.7, runif(1,0.6,0.9), runif(1,0.2,0.5))
df <- data.frame(z1,z2)

但是如果你看z2它只包含两个层次。

          z1        z2
1  0.2875775 0.3360002
2  0.7883051 0.8870500
3  0.4089769 0.3360002
4  0.8830174 0.8870500
5  0.9404673 0.8870500
6  0.0455565 0.3360002
7  0.5281055 0.3360002
8  0.8924190 0.8870500
9  0.5514350 0.3360002
10 0.4566147 0.3360002

我们可以生成 1000 个数字并总结结果。

set.seed(123)
#generate first random variable z1
z1 <- runif(1000,0,1)
#generate secondrandom variable z2
z2 <- ifelse(z1>= 0.7, runif(1,0.6,0.9), runif(1,0.2,0.5))

table(df$z2)

0.352099318057299 0.655542095610872 
              707               293

标签: rrandom

解决方案


z2使用矢量化方法进行计算。因此,当您使用 时runif(1 ,0.6,0.9),您实际上只提取了一个数字。但是,如果你这样做runif(length(z1) ,0.6,0.9),你将拉动 z1 的长度。

set.seed(123)
#generate first random variable z1
z1 <- runif(1000,0,1)
#generate second random variable z2
z2 <- ifelse(z1 >= 0.7, runif(length(z1) ,0.6,0.9), runif(length(z1),0.2,0.5))

df <- data.frame(z1,z2)
table(df$z2)

推荐阅读