英文:
R: Simulating Correlated Coin Flips
问题
我正在使用R编程语言。
我想要模拟硬币翻转,规则如下:
- 如果是正面(heads),下一个翻转是正面的概率为0.6,是反面的概率为0.4。
- 如果是反面(tails),下一个翻转是反面的概率为0.6,是正面的概率为0.4。
在R中,使用'markovchain'包,我可以这样做:
library(markovchain)
# 转移矩阵
P <- matrix(c(0.6, 0.4, 0.4, 0.6), byrow = TRUE, nrow = 2)
rownames(P) <- colnames(P) <- c("H", "T")
mc <- new("markovchain", states = c("H", "T"), transitionMatrix = P)
# 生成状态
states <- rmarkovchain(n = 100, object = mc, t0 = "H")
# 打印
table(states)
输出结果类似于:
> states
[1] "H" "T" "T" "H" "T" "T" "T" "H" "H"
我的问题: 有人能展示如何在基本的R中实现这个吗?
我认为我需要:
- 创建一个大小为'n'的空列表
- 以0.5的概率为n[1]分配值为H或T
- 编写一个IFELSE语句,以
n[i] = ifelse(n[i-1] == "H", sample(c("H", "T"), prob = c(0.6, 0.4), sample(c("H", "T"), prob = c(0.4, 0.6))
为条件
但我不确定如何实现这一点。
有人可以展示给我如何做吗?
谢谢!
英文:
I am working with the R programming language.
I want to simulate coin flips such that:
- If heads, then next head with p = 0.6 and tail = 0.4
- if tails, the next tails with p = 0.6 and heads = 0.4
Using the 'markovchain' package in R, I did this as follows:
library(markovchain)
# transition matrix
P <- matrix(c(0.6, 0.4, 0.4, 0.6), byrow = TRUE, nrow = 2)
rownames(P) <- colnames(P) <- c("H", "T")
mc <- new("markovchain", states = c("H", "T"), transitionMatrix = P)
# Generate states
states <- rmarkovchain(n = 100, object = mc, t0 = "H")
# Print
table(states)
The output looks something like this:
> states
[1] "H" "T" "T" "H" "T" "T" "T" "H" "H"
My Question: Can someone please show me how I can do this in base R?
I think I need to:
- create an empty list of size "n"
- assign n[1] = H or T with prob 0.5
- write an IFELSE statement that says
n[i] = ifelse(n[i-1] == "H", sample(c("H", "T"), prob = c(0.6, 0.4), sample(c("H", "T"), prob = c(0.4, 0.6))
But I am not sure how to do this.
Can someone please show me how to do this?
Thanks!
答案1
得分: 1
这是代码的翻译部分:
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的翻译部分:
```R
这是代码的
<details>
<summary>英文:</summary>
Here it is.
Fair=function() sample( c(rep('H',5), rep('T',5)),1)
A=function() sample( c(rep('H',6), rep('T',4)),1)
B=function() sample( c(rep('H',4), rep('T',6)),1)
x=Fair()
for (i in 1:10) x=c(x,ifelse(tail(x,n=1)=='H', A(), B()))
print(x)
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论