#include <stdio.h>
#include <stdlib.h>
/* http://e...content-available-to-author-only...a.org/wiki/Linear_congruential_generator */
int doTest(int N) {
int i;
unsigned init, r;
for (init = 1; init <= 10; ++init) {
r = init;
for (i = 0; i < N; ++i)
r = 22695477 * r + 1;
printf("%2d -> ...%3d times... -> %6u\n", init
, N
, (r
>>16) & ((1<<15)-1)); }
}
int main(void) {
doTest(1);
doTest(2);
doTest(3);
doTest(10000);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8qIGh0dHA6Ly9lLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5hLm9yZy93aWtpL0xpbmVhcl9jb25ncnVlbnRpYWxfZ2VuZXJhdG9yICovCmludCBkb1Rlc3QoaW50IE4pIHsKCWludCBpOwoJdW5zaWduZWQgaW5pdCwgcjsKCQoJZm9yIChpbml0ID0gMTsgaW5pdCA8PSAxMDsgKytpbml0KSB7CgkJciA9IGluaXQ7CgkJZm9yIChpID0gMDsgaSA8IE47ICsraSkKCQkJciA9IDIyNjk1NDc3ICogciArIDE7CgkJcHJpbnRmKCIlMmQgLT4gLi4uJTNkIHRpbWVzLi4uIC0+ICU2dVxuIiwgaW5pdCwgTiwgKHI+PjE2KSAmICgoMTw8MTUpLTEpKTsKCX0KCXByaW50ZigiXG4iKTsKfQoKaW50IG1haW4odm9pZCkgewoJZG9UZXN0KDEpOwoJZG9UZXN0KDIpOwoJZG9UZXN0KDMpOwoJZG9UZXN0KDEwMDAwKTsKCXJldHVybiAwOwp9