뭐 실전에 사용할려면 보다 깊은 연구가 필요하겠지만
난수에 대해 궁금한 사람에게는 도움이 조금이나마 될겁니다.
절대로 실무에서 그냥 사용하지 마시고 공부만 하세요
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
void Random(long& rInt, float& rFloat)
{ rInt = rInt * 843314861 + 453816693;
if (rInt < 0)
{ rInt = rInt + 2147483647;
rInt += 1;
}
rFloat = rInt * 0.4656612e-9;
}
int main(int argc, char *argv[])
{ long n = time(NULL);
float f = n;
const int max = 255;
long ar[max] = {0,};
for(int i = 0; i <65535; i++)
{ Random(n,f);
ar[int(f * 100)]++;
}
for (int i = 0; i<max; i++)
printf("%ld ", ar[i]);
return EXIT_SUCCESS;
}
그럼
|
실수 난수만 출력 해보았는데 정수 난수도 출력 가능합니다. 한번 수정 해보세요...
그리고 설명에는 일양 분포를 만족한다고 하는데 XXX입니다. 빈도수가 엄청나게 차이가 납니다.
임의성도 보장된다고 하는데.. 이건 어느정도 수긍이 갑니다.
그럼