1

私は Ruby の初心者です :*(, 事前に感謝します.私はできる限り多くのことを学んでおり、何時間も検索しましたが、どこにも答えが見つからないようです.

このメソッドは Deck クラスに記述しました。

def shuffle!
  @cards.shuffle!
end

このメソッドを使用して、カード配列を 1 回だけではなく7回シャッフルするように変更できるかどうかを知りたいのですが、現在はそうしています。そうでない場合は、.shuffle を呼び出す別のメソッドを作成する必要がありますか? 新しいデッキを初期化したら、それを 7 回実行します。助けてくれる人にもう一度感謝します:)

4

3 に答える 3

3

Array#shuffleにはそのような機能がなく、n 回しかないため、以下のようないくつかのトリックを使用できます。ドキュメントは、 rng が指定されている場合、乱数ジェネレーターとして使用されると言っています。

def shuffle!(n=7)
  n.times { @cards.shuffle! }
end

1回だけ呼び出すとa.shuffle、配列でシャッフルが行われaます。 as を呼び出すとa.shuffle(random: Random.new(4))、シャッフル時間は配列でランダムになりaます。

于 2013-10-19T10:10:21.280 に答える
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 の値を返すことに注意してください。

于 2013-10-19T14:31:37.107 に答える
0

デッキを常に 7 回シャッフルする場合は、引数を渡す必要はないと思います。これを試してください。

def shuffle
  7.times {self.shuffle!}
end

そしてinitialize

def initialize
  #your code here
  @cards.shuffle
end
于 2013-10-19T10:14:58.980 に答える