2014年06月29日

C#でシードを固定した乱数を生成する

   このエントリーをはてなブックマークに追加 Clip to Evernote
どう書く?orgに感謝を込めて」シリーズ その20

■問題 (出題者:ところてん さん)
シードを固定した疑似乱数を出力してください。 数回実行して、常に同じ結果が出力されることを確認してください。

数回実行して、常に同じ結果が出力されることを確認してください、ということなので、 GetRandomNumbers というメソッドを定義し、 それを繰り返し呼び出し、一致するかどうかを確認するコードを書いてみた。

■C#で書いたコード
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace Doukaku.Org {
    class Program {
        static void Main(string[] args) {
            var nums1 = GetRandomNumbers(30).ToArray();
            for (int i = 0; i < 10; i++) {
                var nums2 = GetRandomNumbers(30);
                Debug.Assert(nums1.SequenceEqual(nums2));
            }
            Console.WriteLine("OK");
            Console.ReadKey();
        }

        static IEnumerable<int> GetRandomNumbers(int count) {
            Random rnd = new Random(1);  //シードを固定
            for (int i = 0; i < count; i++) {
                yield return rnd.Next();
            }
        }
    }
}


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52375135