рд╕реНрдХреНрд╡реАрдХ рдЬреИрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 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. (Process forContext: [ proc1 := Processor activeProcess. [continue] whileTrue: [ queue wait. t1 := SysTime + 2. s1 := s1 + 1. proc1 suspend. ]. proc1 := nil. ] priority: (sysPriority + 1)) resume. (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: