我正在使用R编程语言.
我有以下问题:
- 有100个硬币:硬币在轮数= 0时随机初始化(即0.5的正面概率和0.5的反面概率)
- 在每一轮,任何给定的硬币都有0.5的概率被选中和翻转,
- 当一枚硬币被翻转时,有0.6的概率会落在翻转时面朝上的同一侧,有0.4的概率会落在另一侧
- 在每一回合结束时,我们判断每一枚硬币(抛或不抛,无关紧要).如果一枚硬币正面朝上,则+1,否则-1
- 我们这样做100圈
My Question:对于这My Question:个回合中的每一个,对于这My Question:个硬币中的每一个—我想跟踪累积的正面数量和累积的反面数量.
例如,假设硬币43被翻转了7次:
- 头,尾,未选中,未选中,头,未选中,尾
那么,分数将是:
- +1,-1,-1,-1,+1,+1,-1
而在最近的一个回合中,累积的数字将是:
- 三头四尾
首先,我对硬币进行了初始化:
num_coins <- 100
num_turns <- 100
coins <- sample(c(-1, 1), num_coins, replace = TRUE)
cumulative_heads <- matrix(0, nrow = num_turns, ncol = num_coins)
cumulative_tails <- matrix(0, nrow = num_turns, ncol = num_coins)
接下来,我try 编写大量模拟代码:
# Simulation
for (turn in 1:num_turns) {
if(turn > 1){
cumulative_heads[turn,] <- cumulative_heads[turn-1,]
cumulative_tails[turn,] <- cumulative_tails[turn-1,]
}
for (coin in 1:num_coins) {
# Check if coin is selected
if (runif(1) < 0.5) {
# Flip the coin
if (runif(1) < 0.6) {
# Coin lands on the same side
coins[coin] <- coins[coin]
} else {
# Coin lands on the other side
coins[coin] <- -coins[coin]
}
}
# Update cumulative counts
if (coins[coin] == 1) {
cumulative_heads[turn, coin] <- cumulative_heads[turn, coin] + 1
} else {
cumulative_tails[turn, coin] <- cumulative_tails[turn, coin] + 1
}
}
}
然后,我创建了一个数据框来存储结果:
results <- data.frame(matrix(ncol = num_coins, nrow = num_turns))
names(results) <- paste0("coin", 1:num_coins)
for (turn in 1:num_turns) {
for (coin in 1:num_coins) {
results[turn, coin] <- paste("Heads: ", cumulative_heads[turn, coin], ", Tails: ", cumulative_tails[turn, coin])
}
}
最后的结果如下(示例):
> results[1:5, 1:5]
coin1 coin2 coin3 coin4 coin5
1 Heads: 1 , Tails: 0 Heads: 0 , Tails: 1 Heads: 1 , Tails: 0 Heads: 1 , Tails: 0 Heads: 1 , Tails: 0
2 Heads: 1 , Tails: 1 Heads: 0 , Tails: 2 Heads: 2 , Tails: 0 Heads: 2 , Tails: 0 Heads: 2 , Tails: 0
3 Heads: 1 , Tails: 2 Heads: 0 , Tails: 3 Heads: 3 , Tails: 0 Heads: 3 , Tails: 0 Heads: 2 , Tails: 1
4 Heads: 2 , Tails: 2 Heads: 0 , Tails: 4 Heads: 4 , Tails: 0 Heads: 4 , Tails: 0 Heads: 2 , Tails: 2
5 Heads: 3 , Tails: 2 Heads: 0 , Tails: 5 Heads: 5 , Tails: 0 Heads: 5 , Tails: 0 Heads: 2 , Tails: 3
我想我把这个问题复杂化了--有人能告诉我我能做些什么来简化这个问题吗?
谢谢!