2017-02-17 77 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) 
} 

希望這能解決您的問題。

相關問題