C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 乱数について


(過去ログ 55 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■31057 / inTopicNo.1)  乱数について
  
□投稿者/ モノ (1回)-(2009/01/14(Wed) 15:45:19)

分類:[.NET 全般] 

現在C#を使ってトランプのブラックジャックを作成しています。

ゲームの初めに乱数を使い、52枚のカードから4枚カードを引く処理をしたいのですが、

52の番号を振ったものからランダムに1を引いた(例えば43番を引いたとして)後にその分を引いた51枚から次のカード候補を引くような場合、どの様に記述すればその処理が出来るでしょうか?


引用返信 編集キー/
■31058 / inTopicNo.2)  Re[1]: 乱数について
□投稿者/ 774RR (284回)-(2009/01/14(Wed) 15:50:03)
random_shuffle (C++ の場合) っすな
0−52(ジョーカー含む場合)の数を入れた配列を作って、ばらばらに入れ替える
フツーにカードをシャッフルする手順とまったく同じ
引用返信 編集キー/
■31059 / inTopicNo.3)  Re[2]: 乱数について
□投稿者/ 凪瀬 (90回)-(2009/01/14(Wed) 17:25:50)
No31058 (774RR さん) に返信
> random_shuffle (C++ の場合) っすな
> 0−52(ジョーカー含む場合)の数を入れた配列を作って、ばらばらに入れ替える
> フツーにカードをシャッフルする手順とまったく同じ

抜き取り操作があるから単方向リストとかの構造の方がうれしいのかもしれないなぁ。
引用返信 編集キー/
■31063 / inTopicNo.4)  Re[3]: 乱数について
□投稿者/ επιστημη (1516回)-(2009/01/14(Wed) 19:31:10)
επιστημη さんの Web サイト
> 抜き取り操作があるから単方向リストとかの構造の方がうれしいのかもしれないなぁ。

とはいえ高々53枚なんで気になるほどのことはなかろうと♪

引用返信 編集キー/
■31066 / inTopicNo.5)  Re[1]: 乱数について
□投稿者/ επιστημη (1517回)-(2009/01/14(Wed) 22:49:29)
επιστημη さんの Web サイト
> 52の番号を振ったものからランダムに1を引いた(例えば43番を引いたとして)後に
> その分を引いた51枚から次のカード候補を引くような場合、どの様に記述すればその処理が出来るでしょうか?

リアル・トランプと同じことすりゃえぇですよ。
たとえばこんな感じで:

          // 0..52 の入ったデッキ
          List<int> deck = new List<int>();
          for ( int i = 0; i < 53; ++i ) {
            deck.Add(i);
          }

          // 手札(最初は0枚)
          List<int> hand = new List<int>();

     // デッキから4枚選んで手札に移動
          Random rnd = new Random();
          for ( int i = 0; i < 4; ++i ) {
            // デッキからでたらめに一枚選び
            int index = rnd.Next(deck.Count);
            // それを手札に追加し
            hand.Add(deck[index]);
            // デッキから取り除く
            deck.RemoveAt(index);
          }
 

引用返信 編集キー/
■31070 / inTopicNo.6)  Re[2]: 乱数について
□投稿者/ モノ (2回)-(2009/01/15(Thu) 00:41:37)
皆様、返信ありがとうございます。

参考にさせていただきます。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -