рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд░реИрдВрдбрдо рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬреЙрди рд╕реНрдХреАрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХреАрд░реНрдг рд╡реГрддреНрддреЛрдВ рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдкрд░ рд░реБрдХ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕рдордп рдореИрдВ рд╕реНрд╡рдпрдВ рдЗрд╕рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рдЪреБрдХрд╛ рдерд╛ред
StackOverflow рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░
.NET рдФрд░
C # рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк "рдпрд╛рджреГрдЪреНрдЫрд┐рдХ" рд╢рдмреНрдж рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП рдЕрдирдЧрд┐рдирдд рдкреНрд░рд╢реНрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рд╢рд╛рд╢реНрд╡рдд рдФрд░ "рдЕрдирдЬрд╛рдиреЗ" рдкреНрд░рд╢реНрди рдХреЛ рдЙрдард╛рддрд╛ рд╣реИ: рдХреНрдпреЛрдВ
System.Random рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ "рдирд╣реАрдВ" рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ "рдФрд░" рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ "ред рдпрд╣ рд▓реЗрдЦ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХрдерди
рд╕рдорд╛рдЪрд╛рд░ рд╕рдореВрд╣ рдФрд░ рд╕рдорд╛рдЪрд╛рд░ рдкрддреНрд░ рдореЗрдВ StackOverflow рдкрд░, "рдпрд╛рджреГрдЪреНрдЫрд┐рдХ" рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдкреНрд░рд╢реНрди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реИрдВ:
рдореИрдВ рдХрдИ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Random.Next рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рдЙрд╕реА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬрдм рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рдирдВрдмрд░ рдмрджрд▓рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рднреАрддрд░ рд╕реНрдерд┐рд░ рд╣реИред
рдХреЛрдб рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд┐рдП рдЧрдП рд╣реИрдВ:
// ! ! for (int i = 0; i < 100; i++) { Console.WriteLine(GenerateDigit()); } ... static int GenerateDigit() { Random rng = new Random(); // , return rng.Next(10); }
рддреЛ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?
рд╡реНрдпрд╛рдЦреНрдпрд╛
рд░реИрдВрдбрдо рд╡рд░реНрдЧ рдПрдХ рд╕рд╣реА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ
рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рд░реИрдВрдбрдо рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ, рдФрд░
рдЕрдЧрд▓реА (рдпрд╛
NextDouble рдпрд╛
NextBytes ) рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рд╡рд┐рдзрд┐ рдЗрд╕ рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреА рд╣реИ рдЬреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рдЕрдЧрд▓реА рдмрд╛рд░ рдЕрдЧрд▓реА рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдП, рдпрд╣ рдПрдХ рдФрд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╡рд╛рдкрд╕ рдХрд┐рдП рдЧрдП рд╕реЗ рдЕрд▓рдЧ рд╣реИред
рд╡рд░реНрдЧ рд░реИрдВрдбрдо рдХреЗ рдХрд╛рдо рдХреЗ рд╕рднреА "рдЗрдВрд╕рд╛рдЗрдб"
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрддрд╛рддреНрдордХ рд╣реИрдВ ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд░реИрдВрдбрдо рд╡рд░реНрдЧ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЙрд╕реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд▓реЗрддреЗ рд╣реИрдВ, рдЬреЛ
рдмреАрдЬ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдФрд░ рд╕рдорд╛рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдВрдд рдореЗрдВ рдЖрдкрдХреЛ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдВрдЧреЗред
рддреЛ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ? рдмреБрд░реА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд▓реВрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рд░реИрдВрдбрдо рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдирдП рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд░реИрдВрдбрдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░, рдЬреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ , рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рдФрд░ рд╕рдордп рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмреАрдЬ (рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐) рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИред рд▓реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди "рд╕реНрдХреНрд░реЙрд▓" рдЗрддрдиреА рддреЗрдЬреА рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдордп "рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ" рдЗрд╕рдХреЗ рдЕрдВрдд рдореЗрдВ; рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд░реИрдВрдбрдо рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд╛рдЬреНрдп рдХреЗ рд╕рдорд╛рди рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд╣реА рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ред
рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?
рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рдеред рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдПрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
.NET рдореЗрдВ рд╕рд╛рд░ рд╡рд░реНрдЧ
randomNumberGenerator рд╢рд╛рдорд┐рд▓ рд╣реИ , рдЬрд╣рд╛рдБ рд╕реЗ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдмрд╛рдж рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛ-
рдЖрд░рдПрдирдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред .NET рдореЗрдВ рдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ -
RNGCryptoServiceProvider рд╡рд░реНрдЧ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВред рдХреНрд░рд┐рдкреНрдЯреЛ-рдЖрд░рдПрдирдЬреА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рд╣реИ, рдпрд╣ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдХрд╛рдлреА рдордЬрдмреВрдд рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред RNGCryptoServiceProvider рдПрдВрдЯреНрд░реЙрдкреА рдХреЗ рдХрдИ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ "рд╢реЛрд░" рд╣реИрдВ, рдФрд░ рдпрд╣ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХреНрд░рдо рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдЗрдВрдЯреНрд░рд╛-рдХрдВрдкреНрдпреВрдЯрд░" рд╢реЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдирд┐рдореНрди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдХреЙрд▓ рдХреЗ рдмреАрдЪ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрдХреНрд╖рд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП рднреА, рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рджреЛрдиреЛрдВ рдЕрдЧрд▓реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬреЛ рдкрд╣рд▓реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдереАрдВред рджрд░рдЕрд╕рд▓, рд╕рдЯреАрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдВрдбреЛрдЬ рд╡рд┐рд╢реЗрд╖ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ "рд╕рдЪреНрдЪреА рджреБрд░реНрдШрдЯрдирд╛рдУрдВ" рдХрд╛ рд╕реНрд░реЛрдд рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд░реЗрдбрд┐рдпреЛрдзрд░реНрдореА рдЖрдЗрд╕реЛрдЯреЛрдк рдХрд╛ рдПрдХ рдХреНрд╖рдп рд╕реЗрдВрд╕рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдкрд╣рд▓реЗ рд╕реЗ рд░реЗрдВрдбрдо рдХреНрд▓рд╛рд╕ рд╕реЗ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ рд░реИрдВрдбрдо.рдиреЗрдХреНрд╕реНрдЯ (100) рдХреЛ рджрд╕ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬреЗред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╢рдХреНрддрд┐ рд╣реИ, рддреЛ рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ (рдмреАрдЬ) рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд░реИрдВрдбрдо рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд░реИрдВрдбрдо рдХреЙрд▓ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддреЗ рд╣реИрдВред рдиреЗрдХреНрд╕реНрдЯ (100), рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд┐рдЫрд▓реЗ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рд╡рд┐рддреНрддреАрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрд╣реБрдд рд╣реА рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред CryptoHSS рд░реИрдВрдбрдо рд╡рд░реНрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рджреВрд╕рд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИред
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрдо рдкреНрд░рджрд░реНрд╢рди рдПрдХ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдПрдкреАрдЖрдИ рд╣реИред RandomNumberGenerator
рдмрд╛рдЗрдЯ рдЕрдиреБрдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИред рд░реИрдВрдбрдо рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреВрд░реНрдгрд╛рдВрдХ, рднрд┐рдиреНрдирд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рде рд╣реА рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реАрдорд╛ рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реЗрдВрдЯрд░ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдЗрди рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдЖрдк RandomNumberGenerator рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд░реИрдкрд░ (рдЖрд╡рд░рдг) рдмрдирд╛рдХрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ "рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ" рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╛рдзрд╛рди рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд░реИрдВрдбрдо рд╡рд░реНрдЧ рдХреА "рдХрдордЬреЛрд░реА" рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИ рдпрджрд┐ рдЖрдк рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрдИ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд░реИрдВрдбрдо рдХреНрд▓рд╛рд╕ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЬрдбрд╝ рд░реИрдВрдбрдо рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬрдм рд░реИрдВрдбрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рд░реИрдВрдбрдо рдирдВрдмрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
рдЕрдм, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реЛрдВрдЧреА ... рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдмрд╛рд░ рдХреЛрдб рдХреЗ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдпрд╣ рд╕рд╣реА рд╣реИ, рд╣рдо рдПрдХ рд╣реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЗ рджреЛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рджреЛ рд╕рдорд╛рди рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдЯ рдореЗрдВ, рд╕рдВрдЦреНрдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рд╕реЗрдЯреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рдЬрд┐рд╕рдореЗрдВ рд░реИрдВрдбрдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреЛрдб рдХрд╛ рдЙрдкрд░реЛрдХреНрдд рдЯреБрдХрдбрд╝рд╛ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдордп рдХреЙрд▓ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░реЗ, рд╣рдо рдЗрд╕реЗ "рдЙрдЪреНрдЪ", рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рд╡рд╣рд╛рдВ рд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмрд╣реБрдд "рд╢реАрд░реНрд╖" рдкрд░ рдЬрд╣рд╛рдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд╛ рдПрдХ рднреА рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд╛
рд░реИрдВрдбрдо рдХреНрд▓рд╛рд╕ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рдХреИрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рд╕рд┐рдВрдЧрд▓рдЯрди, рд╣реИрд▓реЛ!), рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдХрдореА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджрд░реНрдж рдмрди рдЬрд╛рддреА рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдЗрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдХреНрд╖рдг рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдлрд┐рд░, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рддрд░реАрдХреЗ рдореЗрдВ рдЕрднреА рднреА рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдореЙрдирд┐рдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╕рд╛рдзрди рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реИрдВрдбрдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЖрд╡рд░рдг рдмрдирд╛рдПрдВ, рдЬреЛ
рд▓реЙрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдХреЙрд▓ рдХреЛ рд▓рдкреЗрдЯ рджреЗрдЧрд╛, рдЬреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддрд░реАрдХрд╛ рдЦрд░рд╛рдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб-рдЧрд╣рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдЬреЛ рдореИрдВ рдиреАрдЪреЗ рдмрддрд╛рдКрдВрдЧрд╛ рд╡рд╣ рд╣реИ рдкреНрд░рддрд┐ рдзрд╛рдЧрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рд╡рд┐рднрд┐рдиреНрди рдмреАрдЬ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдорд╛рд░реНрдЧ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕реАрдзрд╛ рд╣реИред
рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рджрд╛рддрд╛
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, .NET 4 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирдпрд╛ рдЬреЗрдиреЗрд░рд┐рдХ
рдереНрд░реЗрдбрд▓реЛрдХрд▓ <T> рд╡рд░реНрдЧ, рдЙрди рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдереНрд░реЗрдбрд▓реЛрдХ
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдПрдХрд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп (рдмреАрдЬ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ред рдЯрд┐рдХрдХрд╛рдЙрдВрдЯ (рдпрд╣ рдмрд┐рдирд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реИрдВрдбрдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд░ рдмрд╛рд░ рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рд░реИрдВрдбрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рд╣рдореЗрдВ рд░реИрдВрдбрдо рдХрд╛ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд░реНрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ) GetThreadRandom рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░рдг: рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдлрдВрдХ <рд░реИрдВрдбрдо> рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ (рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЬреЛ рдЙрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ) рд░реИрдВрдбрдо рдХреНрд▓рд╛рд╕ рд╕реЗ рд╣реА рдирд╣реАрдВред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рд░реИрдВрдбрдо рдХрд╛ рдПрдХ рднреА рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╣рд░ рдЬрдЧрд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ; рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдпрд╣ рд╣рд░ рдмрд╛рд░ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдиреАрдЪреЗ рдХрд╛ рд╡рд░реНрдЧ рд░реИрдВрдбрдо рд╡рд░реНрдЧ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдереНрд░реЗрдбреНрд╕ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╣рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
new TypeThatNeedsRandom(RandomProvider.GetThreadRandom)
ред рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рдХреЛрдб рд╣реА рд╣реИ:
using System; using System.Threading; public static class RandomProvider { private static int seed = Environment.TickCount; private static ThreadLocal<Random> randomWrapper = new ThreadLocal<Random>(() => new Random(Interlocked.Increment(ref seed)) ); public static Random GetThreadRandom() { return randomWrapper.Value; } }
рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рд╣реИ рдирд╛? рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдХреЛрдб рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд░реИрдВрдбрдо рдХрд╛ рд╕рд╣реА рдЙрджрд╛рд╣рд░рдг рдЬрд╛рд░реА рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдФрд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдЖрдЧреЗ рдЬрд╛рд░реА рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдмреЗрд╢рдХ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рджреБрд░реБрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рдорд┐рдпрд╛рдЬрд╛ рд╣реИ: рдпрд╣ рд░реИрдВрдбрдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрди рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдкрд░ рд╣рдорд╛рд░реЗ рд░реИрдВрдбрдордкреНрд░реЙрдЗрдбрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рдорд╕реНрдпрд╛рдПрдБ
рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдмрдиреА рд╣реБрдИ рд╣реИ: рд╣рдо рдПрдХ рдХрдордЬреЛрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд░реИрдВрдбрдо рдирдореНрдмрд░рдЧреИрдиреЗрд░ рдореЗрдВ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ RNG рдХрд╛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди RNGCryptoServiceProvider рд╡рд░реНрдЧ рдореЗрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдорд╛рдирдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рдПрдкреАрдЖрдИ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реИред
рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ RNG рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ "рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддрд╛ рдХреЗ рд╕реНрд░реЛрдд" рдЕрд▓рдЧ рдереЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдХрд▓ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдПрдкреАрдЖрдИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд-рд▓реЗрдХрд┐рди-рддреЗрдЬрд╝ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд-рд▓реЗрдХрд┐рди рдзреАрдореА рдЧрддрд┐ рд╕реЗ рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ред рд╡реИрд╕реЗ рд╕рдкрдиреЗ рджреЗрдЦрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рд╢рд╛рдпрдж Microsoft рдХрд╛ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреЗрд╢рдХрд╢ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдпрд╣ рдХреЛрдИ рдирд╣реАрдВ рд╣реЛрдЧрд╛ ... рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИред) рдЖрдк рдЗрд╕реЗ рд░реИрдВрдбрдо рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдФрд░
рдирдореВрдирд╛ рдФрд░ рдиреЗрдХреНрд╕реНрдЯрдмрд╛рдЗрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рдХрдХреНрд╖рд╛ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдирд╛ рднреАред рдирдореВрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рдЧрддрд╛ рд╣реИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЕрдЧрд▓реА рдмрд╛рд░ ...