함수로 초기화 해야 한다는 부분과.. 왜 반드시 초기화를 해야 하는지 에 대한 내용은
제가 알고 있던 내용하고 좀 다르구요...
밑의 내용은 ms 에서 퍼왔습니다.
"응용 프로그램에 다른 난수 시퀀스가 필요하면 다른 seed 값을 사용하여 이 생성자를 반복적으로 호출합니
다. 고유한 seed 값을 생성하는 한 가지 방법은 시간에 따라 달라지도록 하는 것입니다. 예를 들어, 시스템 시
계에서 seed 값을 파생합니다.
그러나 이 생성자가 호출되는 중간에 시스템 시계이 변경될 시간이 없을만큼 빠른 컴퓨터에서 응용 프로그램
을 실행하면 Random의 다른 인스턴스에 대해 seed 값이 동일할 수 있습니다. 이 경우 각 호출에서 seed 값
을 구별하기 위한 알고리즘을 적용합니다.
예를 들어, 다음 C# 식은 시스템 시간 값이 동일한 경우에도 비트 보충 연산을 사용하여 두 개의 다른 seed 값
을 생성합니다. "
위의 말을 잘들어 보면 난수 발생을 초기화하는게 아니라 seed 라는 값이 고유해야 난수가 시퀀스하게
발생할수 있다는것이고 c# 에서는 random 생성자에서 이를 지원해주고 있내요....
public static int seed = 0;
private string subGenOID(int ref_cp_size)
{
string[] arrValue =
{
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M
", "N", "O",
"P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
int intSizeArr = (arrValue.Length - 1);
string strRnd = "";
System.Random objRnd = new Random(seed +=1);
for (int j=0;j<ref_cp_size;j++)
{
int i = objRnd.Next(0, intSizeArr);
strRnd += arrValue[i];
}
return strRnd;
}
private void Page_Load(object sender, System.EventArgs e)
{
// 여기에 사용자 코드를 배치하여 페이지를 초기화합니다.
for (int i=0;i<10;i++)
{
Response.Write (subGenOID(10)+")<br>");
}
Response.End ();
}
위에처럼 생성자를 보시고 seed 변수를 보시면
이해 하실것 같내요...
다음검색