2017-02-17 78 views
-3

现在的问题是: 模拟一个掷骰子的函数。请注意,骰子会以数字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) 

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

+0

你不能运行它来发现它是否正确? –

+3

函数中的x输入参数没有任何作用,因为您无论如何都将1:6分配给第一行的x。 – thc

+2

你真的需要在1个样本长度上替换= TRUE吗? –

回答

-1

较乏味?可能不是,但不太repitition

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

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

除了使用样品的(),你也可以使用runif()与圆()为您的要求的功能,你不必明确给出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) 
} 

希望这能解决您的问题。

相关问题