**Գծային համընկման գեներատոր** - ալգորիթմներից մեկը՝ կեղծ պատահական թվերի գեներատորը, օգտագործվում է սովորական դեպքերում։

Նկարագրություն
--------------

Գծային համընկման գեներատորը հիմնվում է անդամների հաշվարկման գծային հետևողականությամբ որոշ բնական թվի m մոդուլով, հետևյալ ֆորմուլայի տեսքով։

{\displaystyle X\_{k+1}=(aX\_{k}+c)~~{\bmod {~}}~m,}
որտեղ a և c-ն որոշ ամբողջ թվերի գործակիցներ են։ Ստացված հետևողականությունը կախված է մեկնարկային թվի ընտրությունից X0 և նրա տարբեր նշանակությունների դեպքում ստացվում է պատահական թվերի տարբեր արդյունք։ Միաժամանակ այս արդյունքների շատ հատկություններ որոշվում են ֆորմուլայի գործակիցների ընտրությամբ և կախված չեն մեկնարկային թվերի ընտրությունից։

Հատկություն
-----------

Թվերի հետևողականությունը, որը ստացվում է գծային համընկման մեթոդով, պարբերաբար չգերազանցվող m է։ Հատվածի երկարությունը ճիշտ հավասար է m միայն այն դեպքում, երբ։

1. Ամենամեծ ընդհանուր բաժանարար, այսինքն՝c, m = 1 փոխադարձ հասարակ թվեր;
2. a-1 բոլոր հասարակ թվի բաժանարար ;

Ստացված արդյունքի պատահական թվերի վիճակագրական հատկությունները ամբողջովին որոշվում են a և c գործակիցների ընտրությամբ։ Այս հաստատունների համար դուրս են գրված պայմաններ, որոնք երաշխավորում են ստացված պատահական թվերի բավարար որակ։

Հաճախ օգտագործվող պարամետրեր
----------------------------

Իրացման ժամանակ ճիշտ է ընտրել {\displaystyle m=2^{e}}, որտեղ *e* - որտեղ e բիթերի քանակը, քանի որ դա թույլ է տալիս ազատվել համեմատաբար դանդաղ հետազոտություններից։

Փոքր երկրորդական կարգի գեներացված պատահական թվերը ցուցադրում են վարմունք, որը շատ հեռու է պատահականից, դրա համար խորհուրդ է տրվում օգտագործել միայն բարձր կարգեր։ Բացի դրանից այս գեներատորի օգտագործման ժամանակ կետերի ընտրման համար *d*-տարածությունում, կետերն ընկնում են ոչ ավել գիպերհարթություններում, {\displaystyle m^{1/d}}, ինչը սահմանափակում է m1 / d գեներատորի կիրառումը Մոնթե-Կառլի մեթոդով։

Աղյուսակում բերված են առավել հաճախ օգտագործվող գծային համընկման գեներատորների պարամետրերը, հատկապես տարբեր
կազմված միօրինակ գրադարաններում։

| Աղյուսակ | m | a | c | թողարկված բիթերի արդյունք |
| --- | --- | --- | --- | --- |
| Numerical Recipes | 232 | 1664525 | 1013904223 |  |
| Borland C/C++ | 232 | 22695477 | 1 | բիթ 30..16 |
| GNU Compiler Collection | 232 | 69069 | 5 | բիթ 30..16 |
| ANSI C։ Open Watcom, Digital Mars, Metrowerks, IBM VisualAge C/C++ | 232 | 1103515245 | 12345 | բիթ 30..16 |
| Borland Delphi, Virtual Pascal | 232 | 134775813 | 1 | բիթ 63..32 |
| Microsoft Visual/Quick C/C++ | 232 | 214013 | 2531011 | բիթ 30..16 |
| Apple CarbonLib | 231 - 1 | 16807 | 0 | տես en:Lehmer random number generator |
|

Ծածկագրերի վերլուծություն
-------------------------

Գծային մեթոդի առավելությունն այն է, որ գործոնը և մոդուլը համապատասխան ձևով ընտրվում են, ապա ստեղծված թվերի արդյունքը կլինի վիճակագրապես անտարբերելի պատահական արդյունքների բազմաթիվ էլեմենտներից։ { 0, 1, 2, …, *m*-1 }. Սակայն բոլոր արդյունքային այն էլեմենտները միանշանակ որոշվում են 4 պարամետրերով՝ *X\_0*, *a*, *c*, *m*.

Եթե ծածկագրերի վերլուծությունը գիտի հայտնի պարամետրերով գծային համընկման մեթոդի օգտագործումը, ապա հայտնի է դառնում թվերի ամբողջ արդյունքը։ Միաժամանակ, անգամ եթե ծածկագրությունը գիտի միայն գծային համընկամն մեթոդի օգտագործումը, ապա արդյունքի փոքր հատվածի տեղեկատվությունը բավական է մեթոդի պարամետրերի և արդյունքների բոլոր հաջորդող էլեմենտների հայտնաբերումը։ Մասնավորապես, եթե ծածկագրերի վերլուծությանը հայտնի են նշանակությունները {\displaystyle {X\_{0}},{X\_{1}},{X\_{2}},{X\_{3}}}, ապա նրանք բավարարում են հավասարության համակարգին։

{\displaystyle {\begin{cases}X\_{1}=(a\cdot X\_{0}+c)~{\bmod {~}}m\\X\_{2}=(a\cdot X\_{1}+c)~{\bmod {~}}m\\X\_{3}=(a\cdot X\_{2}+c)~{\bmod {~}}m\end{cases}}}
որից կարելի է ստանալ *а*, *с* և *m*.

Դրա համար, թեև գծային համընկման մեթոդը տալիս է վիճակագրապես լավ թվերի արդյունք, նա չի համարվում ծածկագրության դիմացկուն։

Նշումներ
--------