http://en.wikipedia.org/wiki/Random_number_generation
The GLIBC random number generator 讲了GLIBC中random()函数的实现原理,并给出了一段代码:
The GLIBC random number generator 讲了GLIBC中random()函数的实现原理,并给出了一段代码:
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
|
#include <stdio.h>
#define MAX 1000
#define seed 1
main() {
int
r[MAX];
int
i;
r[0] = seed;
for
(i=1; i<31; i++) {
r[i] = (16807LL * r[i-1]) % 2147483647;
if
(r[i] < 0) {
r[i] += 2147483647;
}
}
for
(i=31; i<34; i++) {
r[i] = r[i-31];
}
for
(i=34; i<344; i++) {
r[i] = r[i-31] + r[i-3];
}
for
(i=344; i<MAX; i++) {
r[i] = r[i-31] + r[i-3];
printf
(
"%d\n"
, ((unsigned
int
)r[i]) >> 1);
}
}
|