現在、ランダムに手が配られるゲームを作成しているのですが、そのランダムにの部分が偏りのない方法なのかが不安になり、質問しています。
例をあげると、52枚のトランプがあり、4人プレイヤーに13枚ずつ配るという処理と同じです。
現在は、次の手順で配る処理を行っています。
- 全てのカードを配列に入れる
- 0~配列の大きさの間の乱数を生成する
- その乱数が指すインデックスの要素を配列から一つ取り出す
- 1~3を配列の大きさが0になるまで繰り返す
もっとよい振り分け方をご存じであれば教えていただく、よろしくお願いします。
具体的なコードは以下です。
lang
1 var src = Util.komaStrToArray("11111111112222333344445555667789"); 2 var dest = []; 3 4 for(var i=0;i<32;i++){ 5 var index = Math.floor(this.RNG.random()*src.length); 6 var temp = src.splice(index, 1); 7 dest.push(temp[0]); 8 } 9 return dest.join("");
9種類の駒があるので、数字1文字で駒を表しています。駒の合計が全体で32です。
this.RNGは乱数生成器で、中身はメルセンヌツイスタです。
Util.komaStrToArrayは、単に文字列を1文字ずつ配列に入れなおすだけです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/19 05:15