C#, C♯, C#相談室 Part86 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0229デフォルトの名無しさん
2015/01/07(水) 00:15:10.63ID:kDJhAAzRまず、
・カード・タイプごとにクラスを切るのをやめた
・カード種類の判別は普通のintの数字のみにした
・int型のリストにランダムでカード種類を表す整数リテラルを入れ、それをシャッフルする
これでやりました
結果から言うと、やりたかった事は出来ました
また、シャッフル(ランダムにする)する処理は昨日一日調べたのですが
FisherYatesを最初使っていたのですが、もっと簡単にできるのがあるという記事を見つけて
FisherYatesをやめ、以下のように書きました。
private static void Fisher(int[] c)
{
int[] cardlist = c; //引数の配列を格納
// 1回じゃ偏りが生じるっぽいので念のため何度かシャッフルを繰り返す
for (int cnt = 0; cnt < 10; cnt++)
{
DeckList.cardlist = cardlist.OrderBy(i => Guid.NewGuid()).ToArray();
}
}
正直、このグイッドについてはあまり理解してないのですが、要するにOrderByというソートメソッドと
乱数を発生させるグイッドメソッドを組み合わせてランダムにインデックスの値をソートさせると認識しています
まず1点目にお聞きしたいのは、上記の処理は何か問題点を含んでいないでしょうか?という事です
ちなみに偏りについてですが、あまり起きないに越したことはないと思いますが、そこまで是が非でも
偏りを解消したいというわけでもないので、程々乱れてくれればいいという観点です。
■ このスレッドは過去ログ倉庫に格納されています