본문 바로가기
[ Program ]/C#

C# Random Class 사용하기

by 관이119 2012. 9. 14.

요즘 너무 오래간만에 포스팅이다.

블로그를 옮길까....도 생각하다보니...더 글 올리는 텀이 길어지는것 같기도 하다.

일단..지금 한참 바쁘니 거두절미하고..본론부터 써 내려 가도록 하자.

예전 C에서 rand() 함수를 사용할때는

seed값을 미리 주어서 사용하거나, 일정 범위내의 random값을 사용하는 경우에는 rand()%X를 사용하기도 했다.

(단, seed값이 같다면 매번 같은 패턴으로 난수가 발생하고, 그래서 seed값을 시간을 사용한다고 해도 빠른 루프를 돌리거나 하면..같은 수가 나오는 치명적인 약점이 있긴 하다.)

하지만 C#은...정말 간단하면서도 강력한것 같다. (but, 난 C가 더 좋긴 하다...!!)

Random rNum = new Random();

제공하는 메서드...

rNum.Next(); //범위가 없는 랜덤 값

rNum.Next(int max); //상한 값 지정

rNum.Next(int min, int max); //하한과 상한 값 지정

※ 난수의 하한은 난수에 포함되지만 상한은 절대 포함되지는 않는다.

ex) 1~100까지의 난수를 원한다면, rNum.Next(1,101);을 사용.

두 가지를 비교해 보자면,

case 1) 빠른 루프를 돌려도 그 값이 항상 변하는 난수

Random rNum = new Random();
for (int i = 0; i < 10; i++)
{

Console.WriteLine("{0}", rNum .Next());
}

case 2) 빠른 루프를 돌리면 (기본 seed로 시간을 사용하기에) 그 값이 항상 같은 값을 발생하는 난수
for (int i = 0; i < 10; i++)
{
Random rNum = new Random();
Console.WriteLine("{0}", rNum .Next());
}

자세한것은 MSDN이다.!!!

http://msdn.microsoft.com/ko-kr/library/system.random_methods(VS.80).aspx

'[ Program ] > C#' 카테고리의 다른 글

클래스객체정의  (0) 2012.09.17
데이터베이스 연결  (0) 2012.09.17
WCF Configuration ( Appconfig 스키마 구성표)  (0) 2012.09.14
C#에서 log4net 사용하기  (0) 2012.09.11
NET & C# 에서 log4net 사용하기  (0) 2012.09.11

댓글