R-如何模拟随机变量?

R-如何模拟随机变量?,r,simulation,R,Simulation,我同意一个规则的分布,比如说模拟一个公平的死亡 但是如果我想模拟以下情况呢: 当n为奇数时,X_n=2(概率为0.6)或-1(概率为0.4) 当n为偶数时,X_n=-2(概率为0.6)或1(概率为0.4) 有什么建议吗 试试这个: sample(c(2,-1), size=100, replace=TRUE, prob=c(0.6,0.4)) sample(c(-2,1), size=100, replace=TRUE, prob=c(0.6,0.4))> n<-20 sample

我同意一个规则的分布,比如说模拟一个公平的死亡

但是如果我想模拟以下情况呢:

当n为奇数时,X_n=2(概率为0.6)或-1(概率为0.4)

当n为偶数时,X_n=-2(概率为0.6)或1(概率为0.4)

有什么建议吗

试试这个:

sample(c(2,-1), size=100, replace=TRUE, prob=c(0.6,0.4))
sample(c(-2,1), size=100, replace=TRUE, prob=c(0.6,0.4))> n<-20
sample(c(2,-1),size=100,replace=TRUE,prob=c(0.6,0.4))
样本(c(-2,1),大小=100,替换=TRUE,概率=c(0.6,0.4))>n试试这个:

sample(c(2,-1), size=100, replace=TRUE, prob=c(0.6,0.4))
sample(c(-2,1), size=100, replace=TRUE, prob=c(0.6,0.4))> n<-20
sample(c(2,-1),size=100,replace=TRUE,prob=c(0.6,0.4))

样本(c(-2,1),size=100,replace=TRUE,prob=c(0.6,0.4))>n您可以使用
runif
生成样本,并将其阈值设置为0.4,根据n是奇数还是偶数来决定它是-1/1还是2/-2

sim <- function(n) {
    x <- runif(n)
    if (n %% 2 == 0) {
        ret <- ifelse(x < 0.4, 1, -2)
    } else {
        ret <- ifelse(x < 0.4, -1, 2)
    }
    return(ret)
}

您可以使用
runif
生成样本,并将其阈值设置为0.4,以根据n是奇数还是偶数决定它应该是-1/1还是2/-2

sim <- function(n) {
    x <- runif(n)
    if (n %% 2 == 0) {
        ret <- ifelse(x < 0.4, 1, -2)
    } else {
        ret <- ifelse(x < 0.4, -1, 2)
    }
    return(ret)
}

你读过《代码》吗?样本
你读过《代码》吗?样本
很有魅力。非常感谢。工作得很有魅力。非常感谢。