рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рд╢реЗрд▓ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд░реИрдВрдбрдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдпрд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд░реИрдВрдбрдо рдПрдХ рдРрд╕рд╛ рд╡реИрд░рд┐рдПрдмрд▓ рд╣реИ рдЬреЛ 0 рд╕реЗ 32k рддрдХ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рд▓реЗрддрд╛ рд╣реИред
10,000 рдореЗрдВ рд╕реЗ рдХрд┐рддрдиреА рдмрд╛рд░ - рд░реИрдВрдбрдо рд╡рд┐рд╖рдо рд╣реЛрдЧрд╛?
рдЦреИрд░, рд▓рдЧрднрдЧ 5,000 рдмрд╛рд░ ... рдЬрд╛рдБрдЪ рдХрд░реЗрдВ?
% for i in {1..10000} ; do test $(( RANDOM % 2 )) -eq 1 && echo 1 ; done | wc -l
4985
рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдХреНрдпрд╛ рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ 4985 рдорд┐рд▓реЗрдЧрд╛? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдм рдЙрд╕ рд╢реЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рд╕рдм рдХреБрдЫ рджрд┐рдЦрддрд╛ рд╣реИ:
$ for i in {1..10000} ; do test $(( RANDOM % 2 )) -eq 1 && echo 1 ; done | wc -l
5057
$ for i in {1..10000} ; do test $(( RANDOM % 2 )) -eq 1 && echo 1 ; done | wc -l
4940
$ for i in {1..10000} ; do test $(( RANDOM % 2 )) -eq 1 && echo 1 ; done | wc -l
5021
рд╣рд╛рд▓рд╛рдВрдХрд┐, zsh рдореЗрдВ, рдПрдХ рд╕рддреНрд░ рдХреЗ рднреАрддрд░ - рд░реИрдВрдбрдо рд╡рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рд╣реИред
% for i in {1..10000} ; do test $(( RANDOM % 2 )) -eq 1 && echo 1 ; done | wc -l
4985
% for i in {1..10000} ; do test $(( RANDOM % 2 )) -eq 1 && echo 1 ; done | wc -l
4985
% for i in {1..10000} ; do test $(( RANDOM % 2 )) -eq 1 && echo 1 ; done | wc -l
4985
рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ "bagoficha рд╣реИред"
рдЖрджреЗрд╢реЛрдВ рдХреЗ рджреЛ рд╕реЗрдЯ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрдирд╛ рдорд╛рдирдХ рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдлрд╝рд╛рдЗрд▓
i рдореЗрдВ {1..10000} рдХреЗ рд▓рд┐рдП; $ рдЧреВрдВрдЬ рдХрд░реЛ ((рд░реИрдВрдбрдо% 2)); рд╣реЛ рдЧрдпрд╛ | awk '/ 1 / {N ++} END {рдкреНрд░рд┐рдВрдЯ N}' i рдореЗрдВ {1..10000} рдХреЗ рд▓рд┐рдП; $ рдЧреВрдВрдЬ рдХрд░реЛ ((рд░реИрдВрдбрдо% 2)); рдХрд┐рдпрд╛> tmp_file && awk '/ 1 / {N ++} END {рдкреНрд░рд┐рдВрдЯ N}' tmp_fileрдПрдХ рд╣реА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ - рд░реИрдВрдбрдо рдХреА рд╡рд┐рд╖рдо рдмреВрдВрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЧрд┐рдирд╛рддрд╛ рд╣реИред рдПрдХ рд╣реА zsh-session рдХреЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ - рд╣рдореЗрдВ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ - рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдпрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ред