首页 > 解决方案 > 在R中反复洗牌

问题描述

我在编写代码迷宫时遇到问题,它会反复洗牌。我写了一行洗牌我的腰,但每次牌组都以同样的方式洗牌。我需要帮助编写代码,以便每次以不同的方式洗牌。

shuffling <-sample(deck,length(deck))

标签: rrandomrandom-seed

解决方案


这是一个基本的 R 解决方案,它从一组 10 张卡片中生成一个种子向量和 10 个样本。

seeds <- runif(10)*1000000
cards <- 1:10

shuffledDecks <- lapply(seeds,function(aSeed){
     set.seed(aSeed)
     sample(cards)
})

当我们在 RStudio 对象查看器中检查列表时,我们看到 10 次洗牌中的所有卡片顺序都不同。

在此处输入图像描述

如果我们在不使用 While 和 Double For 循环的情况下应用创建一副纸牌中的一种方法来创建一副纸牌,一组 52 张纸牌的 10 次洗牌看起来像这样。

seeds <- runif(10)*1000000
cards = c(2:10, "J", "Q", "K", "A")
suits = c("♠", "♥", "♦", "♣")
deck <- paste0(rep(cards, length(suits)),  #card values
               rep(suits, each = length(cards))) #suits

shuffledDecks <- lapply(seeds,function(aSeed){
     set.seed(aSeed)
     sample(deck)
})

shuffledDecks[[1]]
shuffledDecks[[2]]

...和输出:

> shuffledDecks[[1]]
 [1] "3♥"  "Q♠"  "6♦"  "8♠"  "9♠"  "2♦"  "10♥" "J♥"  "7♦"  "6♣"  "7♠"  "3♣"  "2♠"  "8♦"  "8♥"  "A♦"  "10♣" "A♥"  "5♦"  "J♦" 
[21] "A♠"  "4♥"  "7♣"  "4♣"  "3♠"  "6♠"  "5♥"  "K♠"  "5♣"  "5♠"  "J♣"  "6♥"  "9♥"  "K♣"  "Q♥"  "9♣"  "A♣"  "9♦"  "3♦"  "K♦" 
[41] "4♦"  "J♠"  "4♠"  "8♣"  "10♠" "Q♦"  "Q♣"  "K♥"  "7♥"  "2♣"  "2♥"  "10♦"
> shuffledDecks[[2]]
 [1] "7♠"  "5♦"  "6♥"  "Q♣"  "K♥"  "J♦"  "Q♠"  "Q♥"  "3♦"  "4♥"  "2♦"  "A♠"  "9♦"  "4♣"  "7♣"  "8♦"  "4♠"  "5♠"  "K♦"  "3♥" 
[21] "6♣"  "A♣"  "10♥" "8♠"  "8♣"  "J♣"  "J♠"  "10♦" "7♦"  "5♣"  "10♣" "9♣"  "K♣"  "K♠"  "8♥"  "6♠"  "2♠"  "5♥"  "3♣"  "J♥" 
[41] "A♦"  "3♠"  "4♦"  "9♥"  "A♥"  "6♦"  "9♠"  "7♥"  "2♥"  "10♠" "2♣"  "Q♦" 
> 

推荐阅读