我是Ruby的半新手:*(所以,提前谢谢你。我尽可能多地学习,我已经搜索了几个小时,但似乎无法在任何地方找到答案。
我在Deck课程中写过这个方法。
def shuffle!
@cards.shuffle!
end
我想知道,如果使用这种方法,我可以修改它以将卡阵列 7 次洗牌,而不是仅仅一次,这是它现在所做的。如果没有,我是否必须编写另一个调用.shuffle的方法!一旦我初始化一个新的甲板,就运行七次。再次感谢任何可以提供帮助的人:)
答案 0 :(得分:3)
你可以使用下面的一些技巧,因为Array#shuffle没有这样的功能,只有 n次。该文档说如果给出了rng,它将被用作随机数生成器。
def shuffle!(n=7)
n.times { @cards.shuffle! }
end
如果你称之为a.shuffle
,则只会对数组a
进行一次改组。如果您调用a.shuffle(random: Random.new(4))
,那么数据{{1}上的随机播放时间是随机的}。
答案 1 :(得分:1)
你可能想要沿着这些方向做点什么。
class Deck
def initialize(cards)
@cards = cards
end
def shuffle!(n = 7)
n.times { @cards.shuffle! }
@cards
end
end
cards = [1, 2, 3, 4]
Deck.new(cards).shuffle! # => [3, 4, 1, 2]
请注意,该方法将返回@cards的值。
答案 2 :(得分:0)
如果你总是要将牌组洗牌7次,我认为你不需要传递论据 - 试试这个:
def shuffle
7.times {self.shuffle!}
end
并在initialize
def initialize
#your code here
@cards.shuffle
end