R - 如何模拟随机变量?
R - how to simulate random variable?
我可以接受正则分布,比如模拟公平骰子。
但是如果我想模拟以下内容怎么办:
当 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
前 20 个数字的示例:
n<-20
odd_n<-seq(1,n,by=2)
even_n<-seq(2,n,by=2)
odd<-sample(c(2,-1), size=n/2, replace=TRUE, prob=c(0.6,0.4))
even<-sample(c(-2,1), size=n/2, replace=TRUE, prob=c(0.6,0.4))
db<-data.frame(value=c(odd,even),number=c(odd_n,even_n))
row.names(db) <- NULL
db
value number
1 -1 1
2 -2 2
3 2 3
4 -2 4
5 2 5
6 -2 6
7 -1 7
8 1 8
9 2 9
10 -2 10
11 2 11
12 1 12
13 2 13
14 -2 14
15 -1 15
16 -2 16
17 -1 17
18 1 18
19 2 19
20 1 20
您可以使用 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)
}
验证分发
hist(sim(10000))
hist(sim(10001))
我可以接受正则分布,比如模拟公平骰子。
但是如果我想模拟以下内容怎么办:
当 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
前 20 个数字的示例:
n<-20
odd_n<-seq(1,n,by=2)
even_n<-seq(2,n,by=2)
odd<-sample(c(2,-1), size=n/2, replace=TRUE, prob=c(0.6,0.4))
even<-sample(c(-2,1), size=n/2, replace=TRUE, prob=c(0.6,0.4))
db<-data.frame(value=c(odd,even),number=c(odd_n,even_n))
row.names(db) <- NULL
db
value number
1 -1 1
2 -2 2
3 2 3
4 -2 4
5 2 5
6 -2 6
7 -1 7
8 1 8
9 2 9
10 -2 10
11 2 11
12 1 12
13 2 13
14 -2 14
15 -1 15
16 -2 16
17 -1 17
18 1 18
19 2 19
20 1 20
您可以使用 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)
}
验证分发
hist(sim(10000))
hist(sim(10001))