рд╕реНрдХреНрд╡реАрдХ: рдореЙрдбрд▓рд┐рдВрдЧ рдХрддрд╛рд░ рдкреНрд░рдгрд╛рд▓реА

рд╕реНрдХреНрд╡реАрдХ рдЬреИрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Habr├й рдкрд░ рдмрд╣реБрдд рдХрдо рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдореИрдВ рдореЙрдбрд▓рд┐рдВрдЧ рдХрддрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдореИрдВ рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрддрд╛рдКрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдХрдИ рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░реЗрдЧрд╛ред

рдЪреАрдЦрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж


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

рдХреНрдпреБрдЗрдВрдЧ рд╕рд┐рд╕реНрдЯрдо


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


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

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

рдЧрдгрд┐рдд рдХрд╛ рдПрдХ рд╕рд╛


рдПрдХ рдкреЙрдЗрд╕рди рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП, рдкреЙрдЗрдВрдЯ рдЯреА рд╕реЗ рд╕рдЯреЗ рд▓рдВрдмрд╛рдИ t (рддрд╛рдК) рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдЧрд┐рд░рдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреЙрдЗрд╕рди рдХрд╛рдиреВрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


рдЬрд╣рд╛рдБ (t, ╧Д) рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреА рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рд╕рдордп рдХреА рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреА рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ ╬╗ (рдЯреА) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреА рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ of рд╕рдордп рдЯреА рдХреЗ рд╕рдореАрдк рд╣реЛрдЧреА:


╬Ы (t) = const = ╬╗ рдкрд░ рджреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп рдХрд╛рдиреВрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


рд░реИрдВрдбрдо рд╡реЗрд░рд┐рдПрдмрд▓ T рдХреЗ рд╡рд┐рддрд░рдг рдШрдирддреНрд╡ рдХрд╛ рд░реВрдк рд╣реИ:


рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдЫрджреНрдо-рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреЙрдЗрд╕рди рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдореАрдХрд░рдг рд╣рд▓ рдХрд░рддрд╛ рд╣реВрдВ :


рдЬрд╣рд╛рдВ r рдореИрдВ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ [0, 1]ред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреЗрддрд╛ рд╣реИ:


рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ, рдЖрдк рдкреВрд░реЗ рд╡реЙрд▓реНрдпреВрдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ, рдкреВрд░реНрдгрд╛рдВрдХ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдВрддрд░рд╛рд▓ [0, 1] рдкрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:


рдЬрд╣рд╛рдВ R рдореИрдВ рдПрдХ рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ;
P рдХреБрдЫ рдмрдбрд╝реА рдЕрднрд╛рдЬреНрдп рд╕рдВрдЦреНрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 2311);
рдХреНрдпреВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ - рдЕрдВрддрд░рд╛рд▓ рдХреА рдКрдкрд░реА рд╕реАрдорд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2 21 = 2097152;
рд░реЗрдо - рдСрдкрд░реЗрд╢рди рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╢реЗрд╖ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

R 0 рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдЖрдорддреМрд░ рдкрд░ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:
Time totalSeconds 

рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП [0, 1], рд╣рдо рднрд╛рд╖рд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
r: = (R / Q) asFloat

рд░реИрдВрдб рдХреНрд▓рд╛рд╕


рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП [0, 1], рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдЬрдирд░реЗрдЯрд░:

 Float variableWordSubclass: #Rand " " instanceVariableNames: '' " " classVariableNames: 'R' " " poolDictionaries: '' " " category: 'Sample' " " 

рд╡рд┐рдзрд┐:

 "" init R := Time totalSeconds.next "  " next R := (R * 2311 + 1) rem: 2097152. ^(R/2097152) asFloat 

рд╕реЗрдВрд╕рд░ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрджреЗрд╢ рд░реИрдВрдб рдЗрдирд┐рдЯ рднреЗрдЬреЗрдВред
рдПрдХ рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реИрдВрдб рдХреЛ рдЖрдЧреЗ рднреЗрдЬреЗрдВред

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо


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

рд╕реНрдХреНрд╡реАрдХ рдХреЛрдб
  "  " | proc1 proc2 t1 t2 s1 s2 sysPriority queue continue r | "  " Rand init. SysTime := 0. s1 := 0. s2 := 0. t1 := -1. t2 := -1. continue := true. sysPriority := Processor activeProcess priority. " " queue := Semaphore new. "  " "  -   1" (Process forContext: [ proc1 := Processor activeProcess. [continue] whileTrue: " " [ queue wait. " " t1 := SysTime + 2. "  " s1 := s1 + 1. proc1 suspend. "     " ]. proc1 := nil. "    1" ] priority: (sysPriority + 1)) resume. "   " "  -   2" (Process forContext: [ proc2 := Processor activeProcess.. [continue] whileTrue: [ queue wait. t2 := SysTime + 7. s2 := s2 + 1. proc2 suspend. ]. proc2 := nil. ] priority: (sysPriority + 1)) resume. "      " [SysTime < 100] whileTrue: [ r := (Rand next * 10) rounded. (r = 0) ifTrue: [r := 1]. ((SysTime rem: r) = 0) ifTrue: [queue signal]. " " "  " (t1 = SysTime) ifTrue: [proc1 resume]. (t2 = SysTime) ifTrue: [proc2 resume]. SysTime := SysTime + 1. "  " ]. "   " PopUpMenu inform: 'proc1: ',(s1 printString),', proc2: ',(s2 printString). continue := false. 


рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ 1 рдкреНрд░рдХреНрд░рд┐рдпрд╛ 31 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реА, рдФрд░ 2 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд╡рд▓ 11:

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


All Articles