대충 인터넷 뒤져가면서 만든 녀석. 그럭저럭 잘 작동하는듯...

#include "time.h"

unsigned long random(unsigned long i)//do not use 0 as seed
{
if(i && time(0)%2)
return (unsigned long)(i>>1)|(((i^(i>>10)^(i>>30)^(i>>31))&1)<<31);
else return (unsigned long)(i*1103515245+12345)%0x100000000;
}

주의할 점은 첫 seed value로 0을 넣지는 말라는 것. 위쪽 알고리즘(LCG)은 문제없이 작동하더라도 아래쪽 알고리즘(LFSR)은 0이 들어가면 0만 나온다. -_-;;

seed value로 0이 들어가도 되도록 수정. 대신에 순서가 바뀌었네...

Mersenne  twister는 써보려고 했는데 너무 길어서 포기 -_-;;;

'Programme' 카테고리의 다른 글

Reversible Computation  (0) 2013.10.29
[C] Entering strings including <space>  (0) 2010.09.11
[C] Conway's Game of Life  (4) 2010.06.25
C언어 달팽이(나선)배열  (7) 2010.04.26
Posted by 덱스터

댓글을 달아 주세요


블로그 이미지
A theorist takes on the world
덱스터
Yesterday81
Today6
Total734,517

달력

 « |  » 2023.2
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28

글 보관함