Программа R для подсчета количества единиц после симуляции справедливой игры в кости - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу смоделировать эксперимент, в котором вы бросаете честные кости 100 раз и подсчитываете их количество. Я хочу повторить этот эксперимент 10 ^ 5 раз и сохранить результаты.

Вот мой код, чтобы бросить кости n раз

dice <- function(n) {
   sample(c(1:6),n,replace = TRUE)
}

x <- dice(100)

Далее я хочу посчитать количество единиц и выполнить симуляцию 10 ^ 5 раз (эта часть неверна):

x <- numeric(10^5)

for(n in 1:10^5){
  x[n] <- sum(dice(100)) 
} 

hist(x,
  main="100 Fair Rolls",
  xlab="Rolls",
  ylab="Probability",
  xlim=c(0,100),
  breaks=-1:1000+1,
  prob=TRUE)

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Вы были очень близки, я думаю. Если вы измените цикл for следующим образом, он должен работать.

for(n in 1:10^5){

  x[n]<-sum(dice(100)==1) 

} 
0 голосов
/ 23 апреля 2019

если вы вычислите sum(dice(100)), вы получите сумму всех результатов, а не только результатов. Вместо этого вы должны возвращать только элементы вашего эксперимента, который содержит 1:

dice <- function(n) {
   x <- sample(c(1:6), n, replace = TRUE)
   length(x[x==1])
}

Тогда вы можете использовать репликацию, которая работает быстрее, чем цикл for:

x <- replicate(10^5, dice(100))
...