概率为R的两个数字中的一个的随机变量

概率为R的两个数字中的一个的随机变量,r,R,我的编码有问题。抱歉,我是新来的,所以这可能是一个简单的答案。我已经搜索了很多论坛,并试图阅读有关R的书籍,但我无法解决这个问题。我想有一个公式,以给定的概率随机输出两个数中的1。例如,它需要拿出10个或20个,概率分别为30%或60%。似乎每个内置的随机变量函数都有一个限制。谢谢。你可以用它 if(runif(1)

我的编码有问题。抱歉,我是新来的,所以这可能是一个简单的答案。我已经搜索了很多论坛,并试图阅读有关R的书籍,但我无法解决这个问题。我想有一个公式,以给定的概率随机输出两个数中的1。例如,它需要拿出10个或20个,概率分别为30%或60%。似乎每个内置的随机变量函数都有一个限制。谢谢。

你可以用它

if(runif(1)<0.3){print(10)}else{print(20)}

如果您想测试它是否真的有效,您可以轻松地测试它:

set.seed(42)

a <- vector()

for (i in 1:100){
  if(runif(1) < 0.3){
    a[i] <- 10
  } else {
    a[i] <- 20}
}

mean(a)
set.seed(42)

a 30%+60%=90%。另外10%的时间你想要什么?您可以使用带有
prob=
参数的
sample()
函数来指定概率。到目前为止,您尝试了什么?您在哪里遇到了困难?这是一种非常低效的解决问题的方法。最好在开始时将向量预先分配到正确的长度,而不是随时间增长,最好一次获取一组随机变量,而不是重复请求值。你只需要
mean(ifelse(runif(100)<0.3,10,20))
@mrflick:true,你的方法会更好,因为它更高效、更“干净”(而且
base::sample()
,正如你在上面的评论中所说的那样)。如果你能把它写进一个答案,我会投它一票!