作業中の別のプロジェクトをテストするために、一意の行のブロックを作成する必要があります。
そこで、長さ X のランダムな文字列を生成する簡単なプログラムを作成しました。
問題は、一度呼び出すとランダムな文字列を取得し、(for ループなどで) 再度呼び出すと、ループの実行全体で同じ文字列を取得することです。
キャッシュされているような気がしますが、.netがそれを行ったとは知らず、この時点で混乱しています。
呼び出しコード:
StreamWriter SW = new StreamWriter("c:\\test.txt");
int x = 100;
while (x >0)
{
SW.WriteLine(RandomString(20));
x--;
}
ここに方法があります:
private static string RandomString(int Length)
{
StringBuilder sb = new StringBuilder();
Random randomNumber = new Random();
for (int i = 0; i <= Length; ++i)
{
int x = randomNumber.Next(65, 122);
sb.Append(Convert.ToChar(x));
}
return sb.ToString();
}
出力は次のとおりです。
"VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
..................
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB"
それで、Random.next() は常に新しい乱数を返すと思ったのはなぜですか?