Для функции R: Как показать список времен бросков, которые бросаются в число «n» для кубиков с n-гранью, когда вы делаете X попыток с l oop? - PullRequest
1 голос
/ 02 мая 2020

Для функции R:

то есть: для повторения броска 6-стороннего сценария игры в кости для 3 попыток, 1-я попытка 3 раза бросить, чтобы получить «6», 2-я попытка 1 броска и 3-й бросок 4 раза, поэтому вернитесь [3,1,4]

roll <- function(n, X){
  a <- 0
  y <- sample(1:n, size=X, replace=TRUE)
  while (y!=n){
    a <- a+1
    return(a)
    }
} 

roll(6,5)

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Как ответил @ James Curran , самый простой способ - применить отрицательное биномиальное распределение.

Если вы хотите определить свою пользовательскую функцию roll, вы можете попробовать код ниже

roll <- function(n, X){
  res <- rep(0,X)
  for (i in 1:X) {
    a <- 0
    repeat {
      if (sample(n,1)==n) break
      a <- a + 1
    }
    res[i] <- a + 1
  }
  res
} 

или

roll <- function(n, X){
  res <- rep(0,X)
  for (i in 1:X) {
    a <- 0
    while (sample(n,1)!=n) {
      a <- a + 1
    }
    res[i] <- a + 1
  }
  res
} 
1 голос
/ 02 мая 2020

Вы можете просто использовать отрицательное биномиальное распределение. Отрицательное биномиальное распределение моделирует вероятность того, что у вас есть n «неудач» до «r» успехов. Итак,

> set.set(100)
> rnbinom(3,  size = 1, prob = 1/6)
[1] 3 7 0

делает три ваших эксперимента. Первому потребовалось 3 броска, чтобы получить 6, второму 7, а третий бросил 6 на первом броске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...