0

私はJavaScriptに比較的慣れておらず、52枚のカードのセットからカードをランダムに生成する小さなアプリを構築しています(すべての可能性を配列に保存しました)。ただし、同じカードが 2 回生成されないようにしたい。そうする方法を見つけることができませんでした。

var cardType = ["A♠","2♠","3♠","4♠","5♠","6♠","7♠","8♠","9♠","10♠","J♠","Q♠","K♠"];

function generateCard()
{
var card = cardType[Math.round(Math.random() * (cardType.length - 1))];
}

スペードのシンボルは、実際には私の配列にはありません。可視性のために入れただけです。

4

4 に答える 4

3

配列を事前にシャッフルし、配列から一度に 1 枚のカードをポップします。

var cardType = ["A♠","2♠","3♠","4♠","5♠","6♠","7♠","8♠","9♠","10♠","J♠","Q♠","K♠"];

//shuffles array
cardType.sort(function() { return 0.5 - Math.random() });

function generateCard()
{    
    return cardType.pop();
}

手に入れたらundefined、すべてのカードを手に入れたことを意味します

于 2013-07-27T09:43:55.790 に答える
0

私はただ:

  • 注文したカードのセット (つまり、「パック」) を作成します。
  • 効果的なシャッフル アルゴリズムを使用して、「パック」から「デッキ」を作成します。
  • deck.pop()そのデッキから連続してカードを取り出すために使用します

カードのデッキを表現するための抽象化は、アプリケーションを開発する際に役立つ可能性があります。今はやり過ぎのように思えるかもしれませんが、長い目で見れば価値があります。適切に行うと、他のプロジェクトでも再利用できるはずです。

于 2013-07-27T09:42:46.723 に答える