// Problem 1: (LCG)
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 5, c = 3, m = 16;
int X = 1;
cout << "Random numbers:\n";
for (int i = 1; i <= 10; i++) {
X = (a * X + c) % m;
cout << X << " ";
}
cout << "\nNormalized values:\n";
X = 1;
for (int i = 1; i <= 10; i++) {
X = (a * X + c) % m;
double r = (double)X / m;
cout << r << " ";
}
cout << endl;
return 0;
}
/*
Q1. Do you see repeating numbers?
= Yes. For example, 5 and 12 appear again later in the sequence.
Q2. How long before it repeats?
= In this setup (a=5, c=3, m=16), the sequence repeats after 8 numbers.
This repeating length is called the "period" of the generator.
*/
Ly8gUHJvYmxlbSAxOiAoTENHKQoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBhID0gNSwgYyA9IDMsIG0gPSAxNjsKICAgIGludCBYID0gMTsgIAoKICAgIGNvdXQgPDwgIlJhbmRvbSBudW1iZXJzOlxuIjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDEwOyBpKyspIHsKICAgICAgICBYID0gKGEgKiBYICsgYykgJSBtOwogICAgICAgIGNvdXQgPDwgWCA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8ICJcbk5vcm1hbGl6ZWQgdmFsdWVzOlxuIjsKCiAgICBYID0gMTsgIAogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMTA7IGkrKykgewogICAgICAgIFggPSAoYSAqIFggKyBjKSAlIG07CiAgICAgICAgZG91YmxlIHIgPSAoZG91YmxlKVggLyBtOwogICAgICAgIGNvdXQgPDwgciA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0KCi8qClExLiBEbyB5b3Ugc2VlIHJlcGVhdGluZyBudW1iZXJzPwo9IFllcy4gRm9yIGV4YW1wbGUsIDUgYW5kIDEyIGFwcGVhciBhZ2FpbiBsYXRlciBpbiB0aGUgc2VxdWVuY2UuCgpRMi4gSG93IGxvbmcgYmVmb3JlIGl0IHJlcGVhdHM/Cj0gSW4gdGhpcyBzZXR1cCAoYT01LCBjPTMsIG09MTYpLCB0aGUgc2VxdWVuY2UgcmVwZWF0cyBhZnRlciA4IG51bWJlcnMuCiAgIFRoaXMgcmVwZWF0aW5nIGxlbmd0aCBpcyBjYWxsZWQgdGhlICJwZXJpb2QiIG9mIHRoZSBnZW5lcmF0b3IuCiovCg==