рд╣рд╛рдИ рдмрд┐рдЯ рд░реИрдВрдбрдо рдирдВрдмрд░ рдЬрдирд░реЗрд╢рди


рдЫрд╡рд┐ рдПрдХ рдмрд╛рд░ рдЬрдм рдореБрдЭреЗ рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 128-рдмрд┐рдЯ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХрд╛рд░реНрдп рдХреЗ рдмрдбрд╝реЗ рдЖрдпрд╛рдо рдХреЗ рдХрд╛рд░рдг, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреАрдЫрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ рдереАред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЪрдпрди рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде 64 рдФрд░ 128 рдмрд┐рдЯреНрд╕ рдХреЗ рдмрд┐рдЯреНрд╕ рдХреЗ рдЫрджреНрдо-рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реИрдЦрд┐рдХ рдмрдзрд╛рдИ рд╡рд┐рдзрд┐ рдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред

рдпрджрд┐ рдЖрдк рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЖрд░рдПрдирдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЛрдЭ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдорд╛рдирдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ рдпрд╛ рдмрд╕ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред


рдорд╛рдирдХ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдиреАрдЪреЗ!


рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреАрдврд╝реА рдХрдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИред рдЧрдгрд┐рдд рдФрд░ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдкреНрдпреВрдЯрд░ рдореЙрдбрд▓рд┐рдВрдЧ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА, рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ (рдХреГрддреНрд░рд┐рдо рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ), рд╕реНрдЯреЛрдЪрд╕реНрдЯрд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (рд╡рд┐рдХрд╛рд╕рд╡рд╛рджреА рдЧрдгрдирд╛), рдФрд░ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реБрдВрджрд░ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ, рдЗрдВрдЬрдиреЛрдВ рдХреЗ рдХрд╛рдо рдЬреИрд╕реА рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЛрдВ рдореЗрдВред рд╡реАрдбрд┐рдпреЛ рдЧреЗрдо рддрд░реНрдХред

рд╕рднреА рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ (рдпрд╛, рдЕрддреНрдпрдВрдд рд╕рдЯреАрдХ, рдЫрджреНрдо рдЖрдпрд╛рдореА) рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ (рдЖрд░рдПрдирдЬреА) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ RNG "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░" рдЖрдорддреМрд░ рдкрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рднреА рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЬрдирд░реЗрдЯрд░ рдЬреЛ рдмрд╣реБрдд рдардВрдбрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд RNG рдЕрднреА рднреА рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИред

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдХрд╛рд░рдг рдЕрд▓рдЧ-рдЕрд▓рдЧ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЕрдХреНрд╕рд░ рдХрд╛рдо рдХреА рдЧрддрд┐ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рдЦреЛрдЬрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рддреЗрдЬ рдпрд╛ рдереЛрдбрд╝рд╛ рдХрдард┐рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рджреВрд╕рд░реЗ, рдЖрд░рдПрдирдЬреА рдХреЗрд╡рд▓ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдХреА рдЧрдбрд╝рдмрдбрд╝реА рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдХрдбрд╝рд╛рдИ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рдХреНрд╖рдг рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрдирдореЗрдВ рдЖрд░рдПрдирдЬреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмреЗрд╣рддрд░ рд╣реИред

рдПрдХ рдХрд╛рд░реНрдп рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЖрд░рдПрдирдЬреА рдХрд╛ рдПрдХ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдЕрд▓рдЧ рд╣реИ, рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬрдирд░реЗрдЯрд░ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╣реИред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдирд╛рдЬ рдХреЗ рд╕рд╛рде рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдирд░реЗрдЯрд░ рдПрдХ рд╣реА рдЕрдиреБрдХреНрд░рдо рдХреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдВрдЧреЗ (рдЬреЛ рдХрд┐ рдЪрдХреНрд░реАрдп рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ) рдмрд╕ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЪрдХреНрд░ рдХреА рд▓рдВрдмрд╛рдИ рдмрдбрд╝реА рд╣реИ, рд▓реЗрдХрд┐рди рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 128-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред C ++ рдореЗрдВ, рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрдо рд╕реЗ рдХрдо 64-рдмрд┐рдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдПрдХ рд▓рдВрдмреА рдЧреБрдЧрд▓реА рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдореЗрдВ рд░реИрдВрдб () рдФрд░ RAND_MAX рдореЗрдВ рднреНрд░рдо рдорд┐рд▓рд╛, 64 рдмрд┐рдЯреНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрд╕рд╛рдЦреА рдХрд╛ рдПрдХ рд╕реЗрдЯ, рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрд░рдПрдирдЬреА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореЗрд░реЗ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд▓рд┐рдЦрдирд╛ рдореБрдЭреЗ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░реНрдп рд▓рдЧрддрд╛ рдерд╛ - рдПрдХ рд░реИрдЦрд┐рдХ рд╕рдВрдпреЛрдЬрдХ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рджреЛ 64-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдЧреЛрдВрджред рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рдерд╛ред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реА рдмрд╛рддред


рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП!


рддреЛ, рдЪрд▓рд┐рдП RNG рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рд░реИрдЦрд┐рдХ рд╕рд░реНрд╡рд╛рдВрдЧреА рд╡рд┐рдзрд┐ рд▓реЗрдВ рдЬреЛ рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ:
рдЬрд╣рд╛рдВ x i , x i + 1 - рд╡рд░реНрддрдорд╛рди рдФрд░ рдЕрдЧрд▓рд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛; a , c рдФрд░ m рдХреБрдЫ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ; mod - рд╢реЗрд╖ рднрд╛рдЧ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд░ред

рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдВрддрд░ рдореА рдХреЛ рдЕрдХреНрд╕рд░ 2 32 рдпрд╛ 2 64 рдХреЗ рдмрд░рд╛рдмрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк 64-рдмрд┐рдЯ рдЕрд╡рд╢реЗрд╖ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ m = 2 64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ рдХреЛ рдП рдФрд░ рд╕реА рдХрд╣рд╛рдВ рдорд┐рд▓реЗрдЧрд╛? рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреБрдЧреНрдо рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛: a = 6364136223846793005 рдФрд░ c = 1442695040888963407ред рджреЛ рдмрд╛рд░ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛, рдореИрдВрдиреЗ рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦрд╛, рдФрд░ рдЕрдкрдиреЗ рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╣ рдЬрд▓реНрджреА рд╕реЗ рд╕рд╛рдЗрдХрд┐рд▓ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред рдЖрд░рдЬреАрдЬреА рдкрд░ рд╕рдВрджреЗрд╣ рдЧрд┐рд░ рдЧрдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ 64-рдмрд┐рдЯ "рдпрд╛рджреГрдЪреНрдЫрд┐рдХ" рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдиреБрдХреНрд░рдо рдХреЗ рдХреБрдЫ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред рдореЛрдиреЛрдХреНрд░реЛрдо рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдХреБрдЫ рдмрд╛рдЗрдирд░реА рдЕрдВрдХреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:


рдирд┐рдЪрд▓реЗ 5 рд╡реЗрдВ, 15 рд╡реЗрдВ рдФрд░ 20 рд╡реЗрдВ рдЕрдВрдХреЛрдВ рдХреЗ рдорд╛рди (рдЦрд░реЛрдВрдЪ рд╕реЗ рдХреНрд░рдорд╛рдВрдХрди)

рд▓рдЧрднрдЧ 20-24 рд▓реЛ-рдСрд░реНрдбрд░ рдмрд╛рдЗрдирд░реА рдмрд┐рдЯреНрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рддреА рд╣реИ, рдЗрд╕рдХреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддрд╛ рдмрдврд╝рддреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ 64-рдмрд┐рдЯ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд░реИрдЦрд┐рдХ рдмрдзрд╛рдИ рдЬрдирд░реЗрдЯрд░ рдХреЗ рджреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо рджреЛ 32-рдмрд┐рдЯ рдЕрдВрд╢реЛрдВ рдХрд╛ рд╕рдВрдШрдЯрди рд╣реИ:


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, java.util.Random рдПрдХ рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ m = 2 48 , рдХреЗрд╡рд▓ 16 рд▓реЛ-рдСрд░реНрдбрд░ рдмрд┐рдЯреНрд╕ рдХреЛ int рдФрд░ long рдмрдирд╛рддреЗ рд╕рдордп рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ 64-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ = 6364136223846793005, c = 1442695040888963407, m = 2 64 , x 0 = 0 рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЪрд┐рддреНрд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:

1442695037175000593
11166244415259155177
7076646891078057782
1459328390042580878
8905969149530007863
11682375496967736740
897247724006084730

рдпреЗ рд╕рдВрдЦреНрдпрд╛ рдХрд┐рддрдиреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реИ? рдорд╛рдирдХ рдЬрд╛рд╡рд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЖрд░рдПрдирдЬреА рд╕реНрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рднреА рд╣реЛред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЧреБрдгрди рдХреЗ рдХреЗрд╡рд▓ рджреЛ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдирд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ m = 2 64 рдкрд░ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЕрдиреНрдп рдорд╛рдиреЛрдВ рдХреЛ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рд▓реЗрдЦ "рдЕрдЪреНрдЫреЗ рдЧреБрдгреЛрдВ" рдХреЗ рд╕рд╛рде рддреАрди рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
a = 2862933555777941757
рд╕реА - рд╡рд┐рд╖рдо, рдПрдо = 2 64
a = 3202034522624059733
a = 3935559000370003845


128 рдмрд┐рдЯ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛


рджреЛ 64-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рдореЗрдВ рдорд┐рд▓рд╛рдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рд╣реИ: 64 рдмрд┐рдЯреНрд╕ рдХреА рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╕рд╛рде рдкреАрдврд╝реА рдХреНрд░рдорд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 25% рддреЗрдЬ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрдирдХреЗ "рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддрд╛" рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реИред "ред

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рдЪрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд░реИрдЦрд┐рдХ рд╕рдВрдпреЛрдЬрдХ рдЬрдирд░реЗрдЯрд░ рдХреЗ рддреАрди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ 32 рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдХреЗрд╡рд▓ 20 рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рдореЛрдиреЛрдХреНрд░реЛрдо рдЪрд┐рддреНрд░ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, 20 рд╡реАрдВ рд╢реНрд░реЗрдгреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣реИред рд╢реЗрд╖ рдмрд┐рдЯреНрд╕ рдЖрдкрдХреЛ 128-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред



рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдЪрд╛рдирдХ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
class RandomGenerator { public: RandomGenerator(unsigned long long int seed = 0); void next(unsigned long long int *hi, unsigned long long int * lo); private: unsigned long long int currentSeed; }; RandomGenerator::RandomGenerator(unsigned long long int seed) : currentSeed(seed) {} void RandomGenerator::next(unsigned long long int *hi, unsigned long long int *lo) { const unsigned long long int a = 6364136223846793005; const unsigned long long int c = 1442695040888963407; const unsigned long long int x = a * this->currentSeed + c; const unsigned long long int y = a * x + c; const unsigned long long int z = a * y + c; *hi = (x & 0xfffffffffff00000) | (z >> 44); *lo = (y & 0xfffffffffff00000) | ((z >> 24) & 0xfffff); this->currentSeed = z; } 

рдПрдХ рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, c , m рдФрд░ x 0 , рдирд┐рдореНрди рд╕рдВрдЦреНрдпрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИрдВ:

26613026195691280501944396807868523054
136526799440480448897747671965175330512
26919857327062567305005081067174740455
151962490054994640693408155996993201355
16551299175504952598134597160493279376
67275013191410065527820230898073478166
72445587156806476974393951227561270647

рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдпрд╣ рд╡рд┐рдзрд┐ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдереАред рдпрд╣ рдЬрд▓реНрджреА рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд┐рдХрд▓рд╛ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓реЗрдЦ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред рдпрд╣ рд╕рдм, рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред ( рдХрд╡рд░ рдкрд░ рдХреНрдпреВрдмреНрд╕ рдХреЗ рд╕рд╛рде рддрд╕реНрд╡реАрд░ рдпрд╣рд╛рдВ рд╕реЗ рд▓реА рдЧрдИ рд╣реИ ред )

рд╕рднреА рдХреЛ рдирдпрд╛ рд╕рд╛рд▓ рдореБрдмрд╛рд░рдХ рд╣реЛ!

Source: https://habr.com/ru/post/In208178/


All Articles