static void Main() { //XorShift乱数ジェネレータの初期化 // 論文デフォルトシード var r_def = new XorShift.defaultSeed(); // 固定値シード var r_const = new XorShift(100); // 時間シード var r = new XorShift(); //デフォルトシード値の取得 Console.WriteLine(">> defaults"); Console.WriteLine(String.Join(", ", XorShift.defaults)); //適用したシード値の取得 Console.WriteLine(">> seeds in r"); Console.WriteLine(String.Join(", ", r.seeds)); //乱数の生データを取得 Console.WriteLine(">> rand 0 to UInt32Max"); for (int i = 0; i < 5; i++) { Console.WriteLine(r_def.rand()); } //0-100の乱数(100含む)を整数で取得 Console.WriteLine(">> randInt 0 to 100"); for (int i = 0; i < 5; i++) { Console.WriteLine(r_const.randInt(0, 100)); } //0-1の乱数を浮遊小数点で取得 Console.WriteLine(">> randFloat 0 to 1"); for (int i = 0; i < 5; i++) { Console.WriteLine(r.randFloat()); } //静的配列のシャッフル //値渡しとなるので元の配列は破壊されない Console.WriteLine(">> shuffle Array"); int[] a = Enumerable.Range(0, 20).ToArray(); Console.WriteLine(String.Join(", ", r.shuffle(a))); Console.WriteLine(String.Join(", ", a)); //List<T>のシャッフル Console.WriteLine(">> shuffle List<T>"); var b = new List <int>(Enumerable.Range(0, 20)); Console.WriteLine(String.Join(", ", r.shuffle(b))); Console.WriteLine(String.Join(", ", b)); //今の乱数を回した回数 Console.WriteLine(">> randCount in r"); Console.WriteLine(r.randCount); }