// Problem 1: Linear Congruential Generator (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 in [0,1]:\n";
X = 1; // reset seed to regenerate for normalization
for (int i = 1; i <= 10; i++) {
X = (a * X + c) % m;
double r = (double)X / m;
cout << r << " ";
}
cout << endl;
return 0;
}
/*
Expected Output:
1. Sequence of generated random numbers:
= 8 11 10 5 12 15 14 9 0 3
2. Normalized to the range [0, 1):
= 0.5 0.6875 0.625 0.3125 0.75 0.9375 0.875 0.5625 0 0.1875
3. Are there any repetitions in the sequence?
= No
*/
Ly8gUHJvYmxlbSAxOiBMaW5lYXIgQ29uZ3J1ZW50aWFsIEdlbmVyYXRvciAoTENHKQoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBhID0gNSwgYyA9IDMsIG0gPSAxNjsKICAgIGludCBYID0gMTsgCgogICAgY291dCA8PCAiUmFuZG9tIG51bWJlcnM6XG4iOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMTA7IGkrKykgewogICAgICAgIFggPSAoYSAqIFggKyBjKSAlIG07CiAgICAgICAgY291dCA8PCBYIDw8ICIgIiA7CiAgICB9CiAgICBjb3V0IDw8ICJcbk5vcm1hbGl6ZWQgdmFsdWVzIGluIFswLDFdOlxuIjsKCiAgICBYID0gMTsgIC8vIHJlc2V0IHNlZWQgdG8gcmVnZW5lcmF0ZSBmb3Igbm9ybWFsaXphdGlvbgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gMTA7IGkrKykgewogICAgICAgIFggPSAoYSAqIFggKyBjKSAlIG07CiAgICAgICAgZG91YmxlIHIgPSAoZG91YmxlKVggLyBtOwogICAgICAgIGNvdXQgPDwgciA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0KCi8qCkV4cGVjdGVkIE91dHB1dDoKCjEuIFNlcXVlbmNlIG9mIGdlbmVyYXRlZCByYW5kb20gbnVtYmVyczoKPSA4IDExIDEwIDUgMTIgMTUgMTQgOSAwIDMKCjIuIE5vcm1hbGl6ZWQgdG8gdGhlIHJhbmdlIFswLCAxKToKPSAwLjUgMC42ODc1IDAuNjI1IDAuMzEyNSAwLjc1IDAuOTM3NSAwLjg3NSAwLjU2MjUgMCAwLjE4NzUKCjMuIEFyZSB0aGVyZSBhbnkgcmVwZXRpdGlvbnMgaW4gdGhlIHNlcXVlbmNlPwo9IE5vCiovCg==