前提・実現したいこと
疑似的な乱数を生成する線形合同法という手法があります。
A,B,Mを整数とし、A>0,B>=0,A<M,B<Mとします。
X0を適当な0以上の整数とし、X1,X2,X3...を次の漸化式で求めます。
Xn+1 = (AXn + B) modM
ただし、mod Mは、「Mで割ったあまり」を表すものとします。
次のdataから、疑似関数のパロメータの組(A,B,M)を探索して表示するプログラムを作りたいです。
該当のソースコード
python
1data=[8,81,94,47,60,13,26,99,112,65,78,31,44,117,10,83,96,49,62,15,28,101,114,67,80,33,46,119,12,85,98,51,64,17,30,103,116,69,82,35,48,1,14,87,100,53,66,19,32,105,118,71,84,37,50,3,16,89,102,55,68,21,34,107,0,73,86,39,52,5,18,91,104,57,70,23,36,109,2,75,88,41,54,7,20,93,106,59,72,25,38,111,4,77,90,43,56,9,22,95,108,61,74,27,40,113,6,79,92,45,58,11,24,97,110,63,76,29,42,115]
試したこと
乱数を生成するプログラムはネットに乗っているのですが、その逆はなかなか見当たらないです...
補足情報(FW/ツールのバージョンなど)
Visual Studio Code, Python