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

わんくま同盟

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

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


(過去ログ 125 を表示中)
■74478 / )  Re[7]: 0から9までをシャッフルする
□投稿者/ shu (659回)-(2015/01/05(Mon) 16:41:33)
No74473 (なちゃ さん) に返信

偏りを検証

            //--- 乱数発生用
            Random rnd = new Random();
            //--- 元の配列
            int[] cards = (Enumerable.Range(0, 10)).ToArray();
            
            int[,] cnt = new int[10, 10];
            Array.Clear(cnt,0,cnt.Length);
            for (int i = 0; i < 100; i++)
            {
                //--- シャッフルして新しい配列に格納
                int[] cards2 = cards.OrderBy((r) => rnd.Next(100)).ToArray();
                //--- 各数字の場所をカウント
                for (int j = 0; j < cards2.Length; j++)
                {
                    cnt[cards2[j], j]++;
                }
            }

            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    Console.Write("{0}  ", cnt[i, j].ToString().PadLeft(4,' '));
                }
                Console.WriteLine();
            }
            Console.WriteLine();


結果:3回実行してみました。これが偏りとみるかは難しいところですが
   気になるようなら前述のように10になったところでその場所でないところへ
   移動するよう補正するとよいかと。
1回目:
   7     6    14     9    10    10    13    11    12     8  
  12     8     6    14     8    12     7    10    12    11  
  10     9     7    12    12    10    11     8    13     8  
  10     9    10     9     8     9    10    14    12     9  
  11    16    10    13     8    13     6     7     7     9  
   6    14    13     6    10     4    17     8    12    10  
  14     9    16     8    11     6    10    12     3    11  
  11    10    10     8    10    12     7    11     8    13  
   9     9     5    12    10    16     7     8    13    11  
  10    10     9     9    13     8    12    11     8    10  

2回目:
   7     6    10     6    15    14    12    12    12     6  
  17    14     6     6    11     8     9    11     6    12  
   7     7    15    10     9    10     8    13     4    17  
  12     7    14    18     4     8    11     6    12     8  
  12     5    13     6    16     9    11     7     8    13  
   6    13     9    14     5     9    13    16     9     6  
   6     9    12    11    12    13     3    10    12    12  
  16    11     6    11     5    13     8     9    14     7  
   8    17     6     6    10     8    14     9    11    11  
   9    11     9    12    13     8    11     7    12     8  

3回目:
  12     6     9     7     8    10    18    13     7    10  
   7     9    14    14     8    12     9     9     9     9  
  12     6     8    18    11    10     6     9    11     9  
   7     7     6     9     9    10    14    12    16    10  
  13     9    14    12    10    12     9     9     7     5  
  14     9     9     6    14     9     8     5     8    18  
  11     7    10     7    10    12     7    14     9    13  
   7    14    13     9     7     9    11     9    11    10  
   8    13     8    11    10     9    10    10    11    10  
   9    20     9     7    13     7     8    10    11     6  

返信 編集キー/


管理者用

- Child Tree -