2. C 프로그래밍에서는 몇 개의 함수가 정해져 있어서 그 함수를 활용하면 난수를 뽑아낼 수 있다.
3. 좀 더 원론적으로 들어가자면 이와 같이 컴퓨터가 뽑아내는 난수를 의사난수(pseudo-random number)라고 부른다.
3-1) 의사난수를 생성하는 방법은 회사마다 다르고 주로 수학적인 방법이 사용된다.
예) 윈도우즈의 경우는 타원형 곡선 암호(ECC) 방법을 쓰기도 한다고 한다.
3-2) 컴퓨터의 난수는 기본값(seed)이 필요하다.
3-3) 의사난수는 주로 암호화할 필요가 있는 부분에 사용되는 편이므로(이를테면 아이템 드롭 확률에 의거하여 아이템을 실제로 드롭시킬 것인가 말 것인가 결정되는 알고리즘 등), 보안이 중요하다.
고등학교때 수학책이였나...맨 뒷장에 난수표가 통채로 있었어요. :D
음 그리고 잘은 모르지만 rand() 함수는 그냥 난수표에서 숫자를 가저오는 걸로 아는데...??
2007.10.19 20:36:15 (*.11.60.2)
칼리토
rand()의 단점은 그냥 하나를 추출하는 것이니까요.
time.h 헤더와 srand(time(NULL))을 사용하면, 임의의 난수 수열을 만들고. 그 다음에 rand()를 쓰면 값이 완전 다르게 추출됩니다.
위ㅉ고 분들이 설명을 더 자세하게 하셨으니 이걸로도 충분할지도(어이)
2007.10.19 23:09:30 (*.96.19.208)
아잉잉♥
시스템 시간을 기준으로 랜덤값을 만들수도 있습니다.
2007.10.20 22:52:46 (*.141.88.2)
랩하는좀비
랜덤을 절대 못뽑아내니.. 이것을 이용해서 우주를 창조할 수 있죠-ㅅ- 행성만들고 그 행성 좌표 시드값으로 랜덤 넣어서 또 만들고 반복반복 와와~
저장은 맨 처음 행성 저장만 하면 똑같은 시드값만 알면 다시 창조창조..
...라고 게임젬스에 나왔더랩니다.
2007.10.22 15:55:37 (*.250.190.156)
지르곤
조건이 많을수록 완벽에 가까운 랜덤값이 생성됩니다?
컴퓨터에서 나오는 수에 랜덤이란건 있을 수가 없죠. 단지 다수 조건으로 그렇게 보이게끔 하는 것이죠. emoticon_00
2007.10.22 16:37:01 (*.54.151.90)
안군
마구 곱하고, 시프트하다보면 overflow 에러가 나는걸 이용해서 난수 함수를 만드는 경우도 있지요...
결국은 "그럴싸"하게 보이는 것 뿐입니다;;;