(랜덤을 사용해 가위바위보를 한 번만 하는 코드)
Random클래스는 완벽한 난수를 생성하지 못 한다.
Random이 난수를 생성하는 데 'seed 값'이 필요하고 random은 ('seed값' + a)를 알고리즘을 돌려 난수 x를 생성한다.
다시 random을 작동시키면 (x + a)를 알고리즘을 돌려 난수 y를 생성한다.
(seed값의 최대는 Int32.MaxValue이다.)
즉, Random random = new random(1);
이라고 seed 값을 지정해주고 random.Next를 5번 돌렸다 치자.
콘솔창을 끄고 다시 코드를 실행시켜보면 언제나 '똑같은' 난수 5개를 생성하는 것을 알 수 있다.
같은 난수 생성을 피하기 위해 seed값을 직접 넣지 않고 Random을 사용하면 '시간에 따라 달라지는 seed값'을
알아서 넣어준다.
(시간은 언제나 흐르니까! 하지만 사용자가 시간을 임의로 조작하여 원하는 난수를 얻어 악용할 수도 있다.)
random.Next();는 0이상 Int32.MaxValue미만에서 난수를 하나 뽑는다.
random.Next(a, b);는 a이상 b미만이다.
반응형