- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
225 :デフォルトの名無しさん[sage]:2015/01/07(水) 00:03:39.74 ID:kDJhAAzR - すみません、この流れを作った>>132です。
一応、報告と、また低レベルな質問をしに来たのですが 今はやめた方がいい感じでしょうか?
|
- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
229 :デフォルトの名無しさん[sage]:2015/01/07(水) 00:15:10.63 ID: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点目にお聞きしたいのは、上記の処理は何か問題点を含んでいないでしょうか?という事です ちなみに偏りについてですが、あまり起きないに越したことはないと思いますが、そこまで是が非でも 偏りを解消したいというわけでもないので、程々乱れてくれればいいという観点です。
|
- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
231 :デフォルトの名無しさん[sage]:2015/01/07(水) 00:17:03.97 ID:kDJhAAzR - すみません、少し訂正です
・カード・タイプごとにクラスを切るのをやめた ・カード種類の判別は普通のintの数字のみにした ・カード種類をintで判定するようにしたので、ArrayListをやめてint配列にした(public static int[] cardlist = {・・・}) ・int型のリストにランダムでカード種類を表す整数リテラルを入れ、それをシャッフルする
|
- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
232 :デフォルトの名無しさん[sage]:2015/01/07(水) 00:23:45.46 ID:kDJhAAzR - 何度もすみません
・int型の配列にランダムでカード種類を表す整数リテラルを入れ、それをシャッフルする でした
|
- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
243 :デフォルトの名無しさん[sage]:2015/01/07(水) 01:26:30.11 ID:kDJhAAzR - もう一つ質問があったのですが、また日を改めます
質問するレベルじゃない気もしますし あとシャッフルはGuidやめてFisherYatesにします ありがとうございました。
|