//Metodo LCG - Donato Modugno 20/11/16
#include <iostream>
using namespace std;

class random {
	public:
		int a,c,M,X,i;
		random();
		calcololcg();
		calcololcg(int seme);
};

int main() {
	char a;
	int s;
	random lcg = random();
	cout << "Scegli un'opzione\n";
	cout << "Inserisci 0 per generare numeri pseudocasuali senza seme\n";
	cout << "Inserisci 1 per generare numeri pseudocasuali con seme\n";
	cin >> a;
	switch (a) {
		case '0':
			lcg.calcololcg();
			break;
		case '1':
			cout << "Inserisci seme\n";
			cin >> s;
			lcg.calcololcg(s);
			break;
	}
}

random::random() {
	a=65;
	c=27;
	M=256;
	X=1;
}

random::calcololcg() {
	for (i=0; i<256; i++) {
		X = (a * X + c) % M;
		cout << X << " ";
	}
}

random::calcololcg(int seme) {
	X=seme;
	for (i=0; i<256; i++) {
		X = (a * X + c) % M;
		cout << X << " ";
	}
}