生成给定R中特定概率值的随机数(0和1)

生成给定R中特定概率值的随机数(0和1),r,random,probability,sample,random-sample,R,Random,Probability,Sample,Random Sample,我在R里找不到这个问题的答案。 我想生成0到1的“随机样本”的随机样本。对于每个示例,我希望有一个特定数量的值'numval',该值是从向量'Prob'的长度中导出的Prob’给了我概率值,每个点都是0或1。因此,在本例中,第一个数字的prob值为0.9,表示1,0.1表示0。等等然后,我想重复随机样本生成1000次。我有一个脚本(如下)生成随机0和1,但我缺少给出概率值的组件。非常感谢您的帮助-我对R Prob <- c(0.9, 0.3, 0.6, 0.8, 0.23, 0.45, 0

我在R里找不到这个问题的答案。 我想生成0到1的“随机样本”的随机样本。对于每个示例,我希望有一个特定数量的值'numval',该值是从向量'Prob'的长度中导出的Prob’给了我概率值,每个点都是0或1。因此,在本例中,第一个数字的prob值为0.9,表示1,0.1表示0。等等然后,我想重复随机样本生成1000次。我有一个脚本(如下)生成随机0和1,但我缺少给出概率值的组件。非常感谢您的帮助-我对R

Prob <- c(0.9, 0.3, 0.6, 0.8, 0.23, 0.45, 0.1, 0.3, 0.5, 0.03)
RandomSample <- list()
zeroones <- c(0,1)
rep = 1000
numval <- length(Prob)

for (i in 1:rep) RandomSample[[i]] <- c(sample(zeroones,numval,replace = TRUE))
t(sapply(RandomSample, unlist, simplify = TRUE))
Prob您可以使用
rbinom()

Prob您可以使用
rbinom()
从二项分布生成随机样本

试试这个:

prob <- c(0.9, 0.3, 0.6, 0.8, 0.23, 0.45, 0.1, 0.3, 0.5, 0.03)
rbinom(length(prob), size = 1, prob=prob)

 [1] 1 1 1 0 0 0 0 1 0 0
现在,您可以使用
colMeans()
将实际实现的概率与您的规范进行比较:

colMeans(x)
 [1] 0.93 0.28 0.61 0.67 0.25 0.43 0.11 0.29 0.40 0.01

在运行stackoverflow之前,请对(i in 1:rep)RandomSample[[i]]尝试此
,您可以在提示符中尝试一个简单的“?sample”。它提供的文档清楚地定义了如何设置随机变量的概率。如果您想重复1000次,您需要以某种方式重复
rbinom()
。您可以遵循@Andrie的代码并将
rep(rbinom(…),1000)
添加到该代码中。我还展示了一种稍微不同的方法来返回1000个实例。
x <- t(replicate(100, rbinom(length(prob), size = 1, prob=prob)))
head(x)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    0    1    1    1    1    0    0    1     0
[2,]    1    1    1    1    0    1    0    1    0     0
[3,]    1    0    1    1    0    0    0    1    0     0
[4,]    1    0    1    0    0    1    0    0    1     0
[5,]    1    1    1    1    0    0    0    0    0     0
[6,]    1    0    0    0    0    0    0    0    0     0
colMeans(x)
 [1] 0.93 0.28 0.61 0.67 0.25 0.43 0.11 0.29 0.40 0.01