我试图模拟'扑克游戏。首先,我创建了一个带有52张卡作为数据帧的卡座。因此我使用了三列:Cardvalue,Cardcolor和Rank(1-52)。
现在有两名玩家每五张牌抽出一张牌 - 而牌数最高的牌手(等级)将赢得比赛。所以我写了一个名为'扑克'并且定义了两个玩家,每个玩家从牌组中抽取5张牌。
问题是,如果玩家1已经获得它,玩家2也可以绘制7颗钻石。我的想法是从牌组中减去队员一的结果,以便只能绘制剩余的牌 - 但每次我遇到错误时,类型列表都无效。我希望你能帮助我!非常感谢你!
poker <- function() {deckmat3 player1 <- deckmat3[sample(nrow(deckmat3),5),] player2 <- deckmat3[sample(nrow(deckmat3),5),] return(ifelse(max(player1$rank) > max(player2$rank),"player1","player2"))}
我的想法是:
poker <- function() {poker <- function() {deckmat3 player1 <- deckmat3[sample(nrow(deckmat3),5),] player2 <- deckmat3[deckmat3$player1][sample(nrow(deckmat3),5),] return(ifelse(max(player1$rank) > max(player2$rank),"player1","player2"))}
但它不起作用:/
编辑:
我希望,我可以提供有用的数据:
cardvalues cv的载体:
cv&lt; -rep(2,4),rep(3,4),rep(4,4),rep(5,4),rep(6,4),rep(7,4),rep (8,4),代表(9,4),代表(10,4),代表(11,4),代表(12,4),代表(13,4),代表(14,4))
Dataframe deckmat3:
deckmat3&lt; - data.frame(cardvalue = c(cv),cardcolor = c(&#34; Diamond&#34;,&#34; Club&#34;,&#34; Heart&#34;,& #34;铲&#34),秩= 1:52)
然后我将数据添加到功能&#39;扑克&#39;我上面提到过。玩家1和玩家2的结果是来自原始数据框架的两个子列表&#39; deckmat3&#39;有5行。问题是,玩家2可以抽取已经由玩家1绘制的牌。这意味着,子列表玩家1&#39;必须从&#39; deckmat3&#39;中删除......这就是问题所在。我无法从列表中删除列表:(
答案 0 :(得分:0)
我尝试不同的方式。您只需要修复cardRank列(不确定如何确定)。
cardValue <- rep(1:13, 4)
cardSuit <-
c(rep("diamond", 13),
rep("heart", 13),
rep("spade", 13),
rep("club", 13))
cardColor <- c(rep("red", 26), rep("black", 26))
cardRank <- 1:52
winnerList <- c()
simulateGames <- function(iterations) {
for (it in 1:iterations) {
cards <- data.frame(cardValue, cardSuit, cardColor, cardRank)
player1Cards <- cards[sample(nrow(cards), 5),]
cards <-
cards[!rownames(cards) %in% rownames(player1Cards),]
player2Cards <- cards[sample(nrow(cards), 5),]
winnerList <-
c(winnerList, ifelse(
max(player1Cards$cardRank) > max(player2Cards$cardRank),
1,
2
))
}
winnerList
}
simulateGames(1000)