我觉得我的代码不完全正确,但我不知道出了什么问题

时间:2017-02-17 03:20:55

标签: r

问题是: 模拟一个掷骰子的功能。请注意,骰子会出现数字1,2,3,4,5或6.该函数应执行以下操作:掷骰子两次,如果两个数字相同,则返回'You Win'否则返回'你输了'(提示:使用样本()) 我的代码是:

s <- function(x)
{
    x = 1:6
    s1 <- sample(x, size = 1, replace = TRUE)
    s2 <- sample(x, size = 1, replace = TRUE)
    result <- ifelse(s1 == s2, "You Win", "You Lose")
    return(result)
}
s(5)

即使代码是正确的,有没有更有效的方法来编写它?我认为这有点乏味。

2 个答案:

答案 0 :(得分:0)

除了使用sample()之外,您还可以将runif()与round()函数一起用于您的需求,而不必明确地给出x。

rolladice <- function(){
  s1 <- round(runif(1,1,6))
  s2 <- round(runif(1,1,6))
  result <- ifelse(s1 == s2, "You Win", "You Lose")
  return(result)
}

希望这能解决您的问题。

答案 1 :(得分:-1)

不那么乏味?可能不是,但重复次数较少

rolldice <- function() {
  sample(1:6, size = 1)
}

s <- function()
{
  ifelse(rolldice() == rolldice(), "You Win", "You Lose")
}
s()