BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ

BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ

рдЧреЗрдо рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрдордзреНрдпреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдмрд▒реНрдпрд╛рдЪрджрд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддреЗрд╕рд╣ рдХрд╛рд╣реАрддрд░реА рдЬреЛрдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ: рдпрд╛рд╕рд╛рдареА рдпреБрдирд┐рдЯреАрдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рд░рдБрдбрдо рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рдорд╛рдВрддрд░ рд╕рд┐рд╕реНрдЯрдо. рд░рдБрдбрдо рдЖрд╣реЗ. рдПрдХрджрд╛, рдПрдХрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рд╡рд░, рдорд▓рд╛ рдЕрд╕реЗ рд╕рдордЬрд▓реЗ рдХреА рджреЛрдШреЗрд╣реА рд╡реЗрдЧрд│реНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдХрд╛рдо рдХрд░реВ рд╢рдХрддрд╛рдд (рдЬрд░реА рддреНрдпрд╛рдВрдЪреЗ рд╡рд┐рддрд░рдг рд╕рдорд╛рди рдЕрд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ).

рдордЧ рддреЗ рддрдкрд╢рд┐рд▓рд╛рдд рдЧреЗрд▓реЗ рдирд╛рд╣реАрдд - рд╣реЗ рдкреБрд░реЗрд╕реЗ рд╣реЛрддреЗ рдХреА System.Random рдордзреНрдпреЗ рд╕рдВрдХреНрд░рдордгрд╛рдиреЗ рд╕рд░реНрд╡ рд╕рдорд╕реНрдпрд╛ рджреБрд░реБрд╕реНрдд рдХреЗрд▓реНрдпрд╛. рдЖрддрд╛ рдЖрдореНрд╣реА рддреНрдпрд╛рдХрдбреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╛рдиреЗ рдкрд╛рд╣рдгреНрдпрд╛рдЪреЗ рдЖрдгрд┐ рдереЛрдбреЗ рд╕рдВрд╢реЛрдзрди рдХрд░рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд┐рд▓реЗ: "рдкрдХреНрд╖рдкрд╛рддреА" рдХрд┐рдВрд╡рд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡рддрд╛ рдпреЗрдгреНрдпрд╛рдЬреЛрдЧреЗ рдЖрд░рдПрдирдЬреА рдХрд╕реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдХреЛрдгрддреЗ рдирд┐рд╡рдбрд╛рдпрдЪреЗ рдЖрд╣реЗ. рд╢рд┐рд╡рд╛рдп, рдореА рддреНрдпрд╛рдВрдЪреНрдпрд╛ "рдкреНрд░рд╛рдорд╛рдгрд┐рдХрдкрдгрд╛" рдмрджреНрджрд▓ рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╡реЗрд│рд╛ рдкрд░рд╕реНрдкрд░рд╡рд┐рд░реЛрдзреА рдорддреЗ рдРрдХрд▓реА рдЖрд╣реЗрдд - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рдХрд╛рд▓ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛рдВрд╢реА рдХрд╕реЗ рддреБрд▓рдирд╛ рдХрд░рддрд╛рдд рд╣реЗ рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛.

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╢реИрдХреНрд╖рдгрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд┐рдВрд╡рд╛ рдЖрд░рдПрдирдЬреА рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдЖрд░рдПрдирдЬреА рдЖрд╣реЗ

рддреБрдореНрд╣реА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдорд╛рдВрдХ рдЬрдирд░реЗрдЯрд░рд╢реА рдЖрдзреАрдЪ рдкрд░рд┐рдЪрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рд▓рдЧреЗрдЪ "рдЪрд╛рдЪрдгреА" рд╡рд┐рднрд╛рдЧрд╛рдд рдЬрд╛рдК рд╢рдХрддрд╛.

рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ (RN) рд╣рд╛ рдХрд╛рд╣реА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ (рдЕрд░рд╛рдЬрдХ) рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдВрдЦреНрдпрд╛рдВрдЪрд╛ рдПрдХ рдХреНрд░рдо рдЖрд╣реЗ, рдЬреЛ рдПрдВрдЯреНрд░реЛрдкреАрдЪрд╛ рд╕реНрд░реЛрдд рдЖрд╣реЗ. рдореНрд╣рдгрдЬреЗрдЪ, рд╣рд╛ рдПрдХ рдЕрд╕рд╛ рдХреНрд░рдо рдЖрд╣реЗ рдЬреНрдпрд╛рдЪреЗ рдШрдЯрдХ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЧрдгрд┐рддреАрдп рдирд┐рдпрдорд╛рдиреЗ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдирд╛рд╣реАрдд - рддреНрдпрд╛рдВрдЪреНрдпрд╛рдд рдХреЛрдгрддреЗрд╣реА рдХрд╛рд░рдг рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдо рд╕рдВрдмрдВрдз рдирд╛рд╣реАрдд.

рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬреЗ рддрдпрд╛рд░ рдХрд░рддреЗ рддреНрдпрд╛рд▓рд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдорд╛рдВрдХ рдЬрдирд░реЗрдЯрд░ (RNG) рдореНрд╣рдгрддрд╛рдд. рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рд╛рдердорд┐рдХ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЬрд░ рдЖрдкрдг рд╕рд┐рджреНрдзрд╛рдВрддрд╛рдкрд╛рд╕реВрди рд╕рд░рд╛рд╡рд╛рдХрдбреЗ рд╡рд│рд▓реЛ, рддрд░ рдЦрд░рдВ рддрд░ рдЕрд╕рд╛ рдХреНрд░рдо рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд▓рд╛рдЧреВ рдХрд░рдгреЗ рдЗрддрдХреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА.

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

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

PRNG рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рдЦрд╛рд▓реАрд▓ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдЕрд╕рддреАрд▓:

  1. рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░рд╛рд░рдВрднрд╛рдЪреА рдЧрд░рдЬ.

    PRNG рдордзреНрдпреЗ рдПрдиреНрдЯреНрд░реЙрдкреАрдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рд╕реНрд░реЛрдд рдирд╛рд╣реА, рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рддреНрдпрд╛рд╕ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддреА рджрд┐рд▓реА рдкрд╛рд╣рд┐рдЬреЗ. рд╣реЗ рд╕рдВрдЦреНрдпрд╛ (рдХрд┐рдВрд╡рд╛ рд╡реЗрдХреНрдЯрд░) рдореНрд╣рдгреВрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рдмреАрдЬ (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдпрд╛рдгреЗ) рдореНрд╣рдгрддрд╛рдд. рдмрд░реНрдпрд╛рдЪрджрд╛, рдкреНрд░реЛрд╕реЗрд╕рд░ рдШрдбреНрдпрд╛рд│ рдХрд╛рдЙрдВрдЯрд░ рдХрд┐рдВрд╡рд╛ рд╕рд┐рд╕реНрдЯреАрдо рд╡реЗрд│реЗрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рдорддреБрд▓реНрдп рд╕реАрдб рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ.

  2. рдЕрдиреБрдХреНрд░рдо рдкреБрдирд░реБрддреНрдкрд╛рджрдирдХреНрд╖рдорддрд╛.

    PRNG рдкреВрд░реНрдгрдкрдгреЗ рдирд┐рд░реНрдзрд╛рд░рд╡рд╛рджреА рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЖрд░рдВрдн рдХрд░рддрд╛рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реЗ рдмреАрдЬ рд╕рдВрдкреВрд░реНрдг рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рд╕рдВрдЦреНрдпрд╛рдВрдЪрд╛ рдХреНрд░рдо рд╡рд┐рд╢рд┐рд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рд╕рдорд╛рди рдмрд┐рдпрд╛рдгреЗ (рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡реЗрд│реА, рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреНрдпреЗ, рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЙрдкрдХрд░рдгрд╛рдВрд╡рд░) рд╕реБрд░реВ рдХреЗрд▓реЗрд▓рд╛ рд╡реЗрдЧрд│рд╛ PRNG рд╕рдорд╛рди рдХреНрд░рдо рддрдпрд╛рд░ рдХрд░реЗрд▓.

рддреБрдореНрд╣рд╛рд▓рд╛ PRNG рдЪреЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рджрд░реНрд╢рд╡рд┐рдгрд╛рд░реА рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рд╡рд┐рддрд░рдг рджреЗрдЦреАрд▓ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ - рддреЗ рдХреЛрдгрддреЗ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрд▓ рдЖрдгрд┐ рдХреЛрдгрддреНрдпрд╛ рд╕рдВрднрд╛рд╡реНрдпрддреЗрд╕рд╣. рдмрд╣реБрддреЗрдХрджрд╛ рд╣реЗ рдПрдХрддрд░ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рдХрд┐рдВрд╡рд╛ рдПрдХрд╕рдорд╛рди рд╡рд┐рддрд░рдг рдЕрд╕рддреЗ.
BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ
рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг (рдбрд╛рд╡реАрдХрдбреЗ) рдЖрдгрд┐ рдПрдХрд╕рдорд╛рди рд╡рд┐рддрд░рдг (рдЙрдЬрд╡реАрдХрдбреЗ)

рд╕рдордЬрд╛, 24 рдмрд╛рдЬреВрдВрдиреА рдЖрдордЪрд╛ рдкрд░рд╛рдХреНрд░рдо рдЖрд╣реЗ. рддреБрдореНрд╣реА рдЯреЙрд╕ рдХреЗрд▓реНрдпрд╛рд╕, рдПрдХ рдорд┐рд│рдгреНрдпрд╛рдЪреА рд╕рдВрднрд╛рд╡реНрдпрддрд╛ 1/24 (рдЗрддрд░ рдХреЛрдгрддреАрд╣реА рд╕рдВрдЦреНрдпрд╛ рдорд┐рд│рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рдВрднрд╛рд╡реНрдпрддреЗрдЗрддрдХреАрдЪ) рдЕрд╕реЗрд▓. рдЬрд░ рддреБрдореНрд╣реА рдЕрдиреЗрдХ рдереНрд░реЛ рдХреЗрд▓реЗ рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдо рд░реЗрдХреЙрд░реНрдб рдХреЗрд▓реЗ, рддрд░ рддреБрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдпреЗрдИрд▓ рдХреА рд╕рд░реНрд╡ рдХрдбрд╛ рдЕрдВрджрд╛рдЬреЗ рд╕рдорд╛рди рд╡рд╛рд░рдВрд╡рд╛рд░рддреЗрдиреЗ рдмрд╛рд╣реЗрд░ рдкрдбрддрд╛рдд. рдореВрд▓рдд:, рд╣реЗ рдбрд╛рдп рдПрдХрд╕рдорд╛рди рд╡рд┐рддрд░рдгрд╛рд╕рд╣ RNG рдорд╛рдирд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рдЬрд░ рддреБрдореНрд╣реА рдпрд╛рдкреИрдХреА 10 рдлрд╛рд╕реЗ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдЯрд╛рдХрд▓реЗ рдЖрдгрд┐ рдПрдХреВрдг рдЧреБрдг рдореЛрдЬрд▓реЗ рддрд░? рддреНрдпрд╛рд╕рд╛рдареА рдПрдХрд╕реВрддреНрд░рддрд╛ рд░рд╛рдЦрд▓реА рдЬрд╛рдИрд▓ рдХрд╛? рдирд╛рд╣реА. рдмрд▒реНрдпрд╛рдЪрджрд╛, рд░рдХреНрдХрдо 125 рдЧреБрдгрд╛рдВрдЪреНрдпрд╛ рдЬрд╡рд│ рдЕрд╕реЗрд▓, рдореНрд╣рдгрдЬреЗ рдХрд╛рд╣реА рд╕рд░рд╛рд╕рд░реА рдореВрд▓реНрдпрд╛рдкрд░реНрдпрдВрдд. рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдореА, рдереНрд░реЛ рдХрд░рдгреНрдпрд╛рдЖрдзреАрдЪ, рдЖрдкрдг рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рдирд┐рдХрд╛рд▓рд╛рдЪрд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рд╢рдХрддрд╛.

рдХрд╛рд░рдг рд╕рд░рд╛рд╕рд░реА рд╕реНрдХреЛрдЕрд░ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рд╕рдВрдпреЛрдЧ рдЖрд╣реЗрдд. рддреНрдпрд╛рдкрд╛рд╕реВрди рдЬрд┐рддрдХреЗ рджреВрд░, рддрд┐рддрдХреЗ рдХрдореА рд╕рдВрдпреЛрдЬрди - рдЖрдгрд┐ рддреНрдпрд╛рдиреБрд╕рд╛рд░, рддреЛрдЯрд╛ рд╣реЛрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдХрдореА. рдЬрд░ рд╣рд╛ рдбреЗрдЯрд╛ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдЗрдЬ рдХреЗрд▓рд╛ рдЕрд╕реЗрд▓, рддрд░ рддреЛ рдЕрд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдШрдВрдЯрд╛рдЪреНрдпрд╛ рдЖрдХрд╛рд░рд╛рд╕рд╛рд░рдЦрд╛ рджрд┐рд╕реЗрд▓. рдореНрд╣рдгреВрди, рдХрд╛рд╣реА рддрд╛рдгреВрди, 10 рдлрд╛рд╕реЗ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдгрд╛рд▓реАрд▓рд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдгрд╛рд╕рд╣ RNG рдореНрд╣рдЯрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рджреБрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг, рдлрдХреНрдд рдпрд╛рд╡реЗрд│реА рд╡рд┐рдорд╛рдирд╛рдд - рд▓рдХреНрд╖реНрдпрд╛рд╡рд░ рд╢реВрдЯрд┐рдВрдЧ. рд╢реВрдЯрд░ рд╣рд╛ рдПрдХ RNG рдЕрд╕реЗрд▓ рдЬреЛ рдЖрд▓реЗрдЦрд╛рд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдгрд╛рд▒реНрдпрд╛ рд╕рдВрдЦреНрдпрд╛рдВрдЪреА рдПрдХ рдЬреЛрдбреА (x, y) рддрдпрд╛рд░ рдХрд░рддреЛ.
BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ
рд╕рд╣рдордд рдЖрд╣реЗ рдХреА рдбрд╛рд╡реАрдХрдбреАрд▓ рдкрд░реНрдпрд╛рдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рдирд╛рдЪреНрдпрд╛ рдЬрд╡рд│ рдЖрд╣реЗ - рд╣реЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдгрд╛рд╕рд╣ рдПрдХ рдЖрд░рдПрдирдЬреА рдЖрд╣реЗ. рдкрд░рдВрддреБ рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЧрдбрдж рдЖрдХрд╛рд╢рд╛рдд рддрд╛рд░реЗ рд╡рд┐рдЦреБрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдЕрд╕реЗрд▓, рддрд░ рдПрдХрд╕рдорд╛рди рд╡рд┐рддрд░рдгрд╛рд╕рд╣ RNG рд╡рд╛рдкрд░реВрди рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗрд▓рд╛ рдпреЛрдЧреНрдп рдкрд░реНрдпрд╛рдп рдЕрдзрд┐рдХ рдпреЛрдЧреНрдп рдЖрд╣реЗ. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╣рд╛рддрд╛рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХрд╛рд░реНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЬрдирд░реЗрдЯрд░ рдирд┐рд╡рдбрд╛.

рдЖрддрд╛ PNG рдХреНрд░рдорд╛рдЪреНрдпрд╛ рдПрдиреНрдЯреНрд░реЙрдкреАрдмрджреНрджрд▓ рдмреЛрд▓реВ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдПрдХ рдХреНрд░рдо рдЖрд╣реЗ рдЬреЛ рдпрд╛рдкреНрд░рдорд╛рдгреЗ рд╕реБрд░реВ рд╣реЛрддреЛ:

89, 93, 33, 32, 82, 21, 4, 42, 11, 8, 60, 95, 53, 30, 42, 19, 34, 35, 62, 23, 44, 38, 74, 36, 52 18, 58, 79, 65, 45, 99, 90, 82, 20, 41, 13, 88, 76, 82, 24, 5, 54, 72, 19, 80, 2, 74, 36, 71, 9, ...

рдкрд╣рд┐рд▓реНрдпрд╛ рджреГрд╖реНрдЯреАрдХреНрд╖реЗрдкрд╛рдд рд╣реА рд╕рдВрдЦреНрдпрд╛ рдХрд┐рддреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрд╣реЗрдд? рдЪрд▓рд╛ рд╡рд┐рддрд░рдг рддрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВрдпрд╛.
BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ
рд╣реЗ рдПрдХрд╕рдорд╛рдирд╛рдЪреНрдпрд╛ рдЬрд╡рд│ рджрд┐рд╕рддреЗ, рдкрд░рдВрддреБ рдЬрд░ рддреБрдореНрд╣реА рджреЛрди рд╕рдВрдЦреНрдпрд╛рдВрдЪрд╛ рдХреНрд░рдо рд╡рд╛рдЪрд▓рд╛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪрд╛ рд╕рдорддрд▓рд╛рддреАрд▓ рд╕рдордиреНрд╡рдп рдореНрд╣рдгреВрди рдЕрд░реНрде рд▓рд╛рд╡рд▓рд╛ рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдорд┐рд│реЗрд▓:
BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ
рдирдореБрдиреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рджреГрд╢реНрдпрдорд╛рди рд╣реЛрддрд╛рдд. рдЖрдгрд┐ рдХреНрд░рдорд╛рддреАрд▓ рдбреЗрдЯрд╛ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░реЗ рдСрд░реНрдбрд░ рдХреЗрд▓реЗрд▓рд╛ рдЕрд╕рд▓реНрдпрд╛рдиреЗ (рдореНрд╣рдгрдЬреЗрдЪ, рддреНрдпрд╛рдЪреА рдПрдиреНрдЯреНрд░реЙрдкреА рдХрдореА рдЖрд╣реЗ), рдпрд╛рдореБрд│реЗ "рдмрд╛рдпрд╕" рд╣реЛрдК рд╢рдХрддреЛ. рдХрдореАрдд рдХрдореА, рдЕрд╕реЗ рдкреАрдЖрд░рдПрдирдЬреА рд╡рд┐рдорд╛рдирд╛рдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдлрд╛рд░рд╕реЗ рдпреЛрдЧреНрдп рдирд╛рд╣реА.

рджреБрд╕рд░рд╛ рдХреНрд░рдо:

42, 72, 17, 0, 30, 0, 15, 9, 47, 19, 35, 86, 40, 54, 97, 42, 69, 19, 20, 88, 4, 3, 67, 27, 42 56, 17, 14, 20, 40, 80, 97, 1, 31, 69, 13, 88, 89, 76, 9, 4, 85, 17, 88, 70, 10, 42, 98, 96, 53, ...

рд╡рд┐рдорд╛рдирд╛рддрд╣реА рд╕рд░реНрд╡ рдХрд╛рд╣реА рдареАрдХ рдЖрд╣реЗ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:
BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ
рдЪрд▓рд╛ рд╡реНрд╣реЙрд▓реНрдпреВрдордордзреНрдпреЗ рдкрд╛рд╣реВ (рдПрдХрд╛рд╡реЗрд│реА рддреАрди рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдЪрд╛):
BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ
рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рдирдореБрдиреЗ. рдЪрд╛рд░ рдЖрдпрд╛рдорд╛рдВрдордзреНрдпреЗ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрддрд╛ рд╢рдХреНрдп рдирд╛рд╣реА. рдкрд░рдВрддреБ рдпрд╛ рдЖрдХрд╛рд░рдорд╛рдирд╛рд╡рд░ рдЖрдгрд┐ рдореЛрдареНрдпрд╛ рдЖрдХрд╛рд░рд╛рд╡рд░ рдирдореБрдиреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕реВ рд╢рдХрддрд╛рдд.

рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреАрдордзреНрдпреЗ, рдЬрд┐рдереЗ PRNGs рд╡рд░ рд╕рд░реНрд╡рд╛рдд рдХрдареЛрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд▓рд╛рджрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЕрд╢реА рдкрд░рд┐рд╕реНрдерд┐рддреА рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рдЖрд╣реЗ. рдореНрд╣рдгреВрди, рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЧреБрдгрд╡рддреНрддреЗрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╢реЗрд╖ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд, рдЬреНрдпрд╛рд▓рд╛ рдЖрдореНрд╣реА рдЖрддрд╛ рд╕реНрдкрд░реНрд╢ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА. рд╡рд┐рд╖рдп рд╡рд┐рд╕реНрддреГрдд рдЖрд╣реЗ рдЖрдгрд┐ рд╕реНрд╡рддрдВрддреНрд░ рд▓реЗрдЦрд╛рд╕ рдкрд╛рддреНрд░ рдЖрд╣реЗ.

рдЪрд╛рдЪрдгреА

рдЬрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рдХрд╛рд╣реАрддрд░реА рдорд╛рд╣рд┐рдд рдирд╕реЗрд▓, рддрд░ рддреНрдпрд╛рд╕рд╣ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ? рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдгрддрд╛ рдЯреНрд░реЕрдлрд┐рдХ рд▓рд╛рдЗрдЯ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╕рд▓реНрдпрд╛рд╕ рд░рд╕реНрддрд╛ рдУрд▓рд╛рдВрдбрдгреЗ рдпреЛрдЧреНрдп рдЖрд╣реЗ рдХрд╛? рддреНрдпрд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо рд╡реЗрдЧрд│реЗ рдЕрд╕реВ рд╢рдХрддрд╛рдд.

рдпреБрдирд┐рдЯреАрдордзреАрд▓ рдХреБрдЦреНрдпрд╛рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддреЗрд╕рд╛рдареАрд╣реА рд╣реЗрдЪ рдЖрд╣реЗ. рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рддрдкрд╢реАрд▓ рдкреНрд░рдХрдЯ рдХрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рддреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдирдореВрдж рдХреЗрд▓реЗрд▓реА рдХрдерд╛ рдЗрдЪреНрдЫрд┐рдд рддрдкрд╢реАрд▓рд╛рдВрдЪреНрдпрд╛ рдЕрднрд╛рд╡рд╛рдореБрд│реЗ рддрдВрддреЛрддрдВрдд рдШрдбрд▓реА.

рдЖрдгрд┐ рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рд╕рд╛рдзрди рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рддреЗ рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕рдгрд╛рд░ рдирд╛рд╣реА. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдХрд┐рдорд╛рди рд╡рд┐рддрд░рдгрд╛рдмрд╛рдмрдд рдЦрд╛рддреНрд░реА рдХрд░реВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рдпреЛрдЧ рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ.

рдЙрдкрд╛рдп рд╕реЛрдкрд╛ рдЖрдгрд┐ рдкреНрд░рднрд╛рд╡реА рд╣реЛрддрд╛ - рдЖрдХрдбреЗрд╡рд╛рд░реА рдЧреЛрд│рд╛ рдХрд░рд╛, рд╡рд╕реНрддреБрдирд┐рд╖реНрда рдбреЗрдЯрд╛ рдорд┐рд│рд╡рд╛ рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдо рдкрд╣рд╛.

рдЕрднреНрдпрд╛рд╕рд╛рдЪрд╛ рд╡рд┐рд╖рдп

рдпреБрдирд┐рдЯреАрдордзреНрдпреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреНрдпрд╛рдЪреЗ рдЕрдиреЗрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд - рдЖрдореНрд╣реА рдкрд╛рдЪ рдЪрд╛рдЪрдгреА рдХреЗрд▓реА.

  1. System.Random.Next(). рджрд┐рд▓реЗрд▓реНрдпрд╛ рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ рдкреВрд░реНрдгрд╛рдВрдХ рддрдпрд╛рд░ рдХрд░рддреЗ.
  2. System.Random.NextDouble(). [0 рдкрд╛рд╕реВрди рд╢реНрд░реЗрдгреАрддреАрд▓ рджреБрд╣реЗрд░реА рдЕрдЪреВрдХ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ; 1).
  3. UnityEngine.Random.Range(). рджрд┐рд▓реЗрд▓реНрдпрд╛ рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ рдПрдХрд▓ рдЕрдЪреВрдХ рд╕рдВрдЦреНрдпрд╛ (рдлреНрд▓реЛрдЯреНрд╕) рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддреЗ.
  4. UnityEngine.Random.value. [0 рдкрд╛рд╕реВрди рд╢реНрд░реЗрдгреАрддреАрд▓ рдПрдХрд▓ рдЕрдЪреВрдХ рд╕рдВрдЦреНрдпрд╛ (рдлреНрд▓реЛрдЯреНрд╕) рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддреЗ; 1).
  5. Unity.Mathematics.Random.NextFloat(). рдирд╡реАрди Unity.Mathematics рд▓рд╛рдпрдмреНрд░рд░реАрдЪрд╛ рднрд╛рдЧ. рджрд┐рд▓реЗрд▓реНрдпрд╛ рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ рдПрдХрд▓ рдЕрдЪреВрдХ рд╕рдВрдЦреНрдпрд╛ (рдлреНрд▓реЛрдЯреНрд╕) рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддреЗ.

рджрд╕реНрддрдРрд╡рдЬрд╛рдд рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡рддреНрд░ UnityEngine.Random.value (рдЬреЗрдереЗ рд╡рд┐рддрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реЗ рдирд╡реНрд╣рддреЗ, рдкрд░рдВрддреБ UnityEngine.Random.Range() рдЧрдгрд╡реЗрд╢рд╛рдЪреНрдпрд╛ рд╕рд╛рджреГрд╢реНрдпрд╛рдиреЗ рджреЗрдЦреАрд▓ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛрддреЗ) рдЖрдгрд┐ Unity.Mathematics.Random рдЕрдкрд╡рд╛рдж рд╡рдЧрд│рддрд╛ рдПрдХрд╕рдорд╛рди рд╡рд┐рддрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рд╣реЛрддреЗ. .NextFloat() (рдЬреЗрдереЗ рдЖрдзрд╛рд░рд╛рд╡рд░ xorshift рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрд╣реЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рдкреБрдиреНрд╣рд╛ рдПрдХрд╕рдорд╛рди рд╡рд┐рддрд░рдгрд╛рд╕рд╛рдареА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓).

рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рджрд╕реНрддрдРрд╡рдЬрд╛рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдШреЗрддрд▓реЗ рдЧреЗрд▓реЗ.

рдХрд╛рд░реНрдпрдкрджреНрдзрддреА

рдЖрдореНрд╣реА рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рд┐рд╣рд┐рд▓рд╛ рдЬреНрдпрд╛рдиреЗ рд╕рд╛рджрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрджреНрдзрддреАрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдВрдЪрд╛ рдХреНрд░рдо рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрдгрд┐ рдкреБрдвреАрд▓ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рдкрд░рд┐рдгрд╛рдо рдЬрддрди рдХреЗрд▓реЗ.

рдкреНрд░рддреНрдпреЗрдХ рдХреНрд░рдорд╛рдЪреА рд▓рд╛рдВрдмреА 100 рд╕рдВрдЦреНрдпрд╛ рдЖрд╣реЗ.
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдВрдЪреА рд╢реНрд░реЗрдгреА [0, 100) рдЖрд╣реЗ.

рдЕрдиреЗрдХ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░реВрди рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛:

  • Windows
    тАФ рдпреБрдирд┐рдЯреА v2018.3.14f1, рд╕рдВрдкрд╛рджрдХ рдореЛрдб, рдореЛрдиреЛ, .NET рдорд╛рдирдХ 2.0
  • macOS
    тАФ рдпреБрдирд┐рдЯреА v2018.3.14f1, рд╕рдВрдкрд╛рджрдХ рдореЛрдб, рдореЛрдиреЛ, .NET рдорд╛рдирдХ 2.0
    тАФ рдпреБрдирд┐рдЯреА v5.6.4p4, рд╕рдВрдкрд╛рджрдХ рдореЛрдб, рдореЛрдиреЛ, .NET рдорд╛рдирдХ 2.0
  • Android
    тАФ рдпреБрдирд┐рдЯреА v2018.3.14f1, рдмрд┐рд▓реНрдб рдкреНрд░рддрд┐ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕, рдореЛрдиреЛ, .NET рдорд╛рдирдХ 2.0
  • iOS
    тАФ рдпреБрдирд┐рдЯреА v2018.3.14f1, рдмрд┐рд▓реНрдб рдкреНрд░рддрд┐ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕, il2cpp, .NET рдорд╛рдирдХ 2.0

рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЕрдиреЗрдХ рднрд┐рдиреНрди рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд. рддреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдПрдХ рд╡реЗрдЧрд│рд╛ рд░реЕрдкрд░ рд╡рд░реНрдЧ рд▓рд┐рд╣реВ, рдЬреНрдпрд╛рдиреЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ:

  1. рдореВрд▓реНрдпрд╛рдВрдЪреА рд╢реНрд░реЗрдгреА рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ [рдХрд┐рдорд╛рди/рдХрдорд╛рд▓). рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рджреНрд╡рд╛рд░реЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓.
  2. MF рдкрд░рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрджреНрдзрдд. рдЪрд▓рд╛ рдкреНрд░рдХрд╛рд░ рдореНрд╣рдгреВрди рдлреНрд▓реЛрдЯ рдирд┐рд╡рдбреВ, рдХрд╛рд░рдг рддреЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗ.
  3. рдкрд░рд┐рдгрд╛рдо рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд┐рдвреА рдкрджреНрдзрддреАрдЪреЗ рдирд╛рд╡. рд╕реЛрдпреАрд╕рд╛рдареА, рдЖрдореНрд╣реА рдореВрд▓реНрдп рдореНрд╣рдгреВрди рд╡рд░реНрдЧрд╛рдЪреЗ рдкреВрд░реНрдг рдирд╛рд╡ + MF рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдкрджреНрдзрддреАрдЪреЗ рдирд╛рд╡ рдкрд░рдд рдХрд░реВ.

рдкреНрд░рдердо, IRandomGenerator рдЗрдВрдЯрд░рдлреЗрд╕рджреНрд╡рд╛рд░реЗ рджрд░реНрд╢рд╡рд┐рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд▒реНрдпрд╛ ре▓рдмреНрд╕реНрдЯреНрд░реЕрдХреНрд╢рдирдЪреА рдШреЛрд╖рдгрд╛ рдХрд░реВрдпрд╛:

namespace RandomDistribution
{
    public interface IRandomGenerator
    {
        string Name { get; }

        float Generate();
    }
}

System.Random.Next() рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

рд╣реА рдкрджреНрдзрдд рддреБрдореНрд╣рд╛рд▓рд╛ рдореВрд▓реНрдпрд╛рдВрдЪреА рд╢реНрд░реЗрдгреА рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, рдкрд░рдВрддреБ рддреА рдкреВрд░реНрдгрд╛рдВрдХ рдорд┐рд│рд╡рддреЗ, рдкрд░рдВрддреБ рдлреНрд▓реЛрдЯреНрд╕рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ. рддреБрдореНрд╣реА рдлреНрд▓реЛрдЯ рдореНрд╣рдгреВрди рдкреВрд░реНрдгрд╛рдВрдХрд╛рдЪрд╛ рд╕рд░рд│ рдЕрд░реНрде рд▓рд╛рд╡реВ рд╢рдХрддрд╛, рдХрд┐рдВрд╡рд╛ рддреБрдореНрд╣реА рдореВрд▓реНрдпрд╛рдВрдЪреА рд╢реНрд░реЗрдгреА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реВ рд╢рдХрддрд╛, рдкрд░рд┐рдорд╛рдгрд╛рдВрдЪреНрдпрд╛ рдЕрдиреЗрдХ рдСрд░реНрдбрд░рджреНрд╡рд╛рд░реЗ, рддреНрдпрд╛рдВрдирд╛ рдорд┐рдбрд░реЗрдВрдЬрдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдвреАрд╕рд╣ рднрд░рдкрд╛рдИ рджреЗрдК рд╢рдХрддрд╛. рдкрд░рд┐рдгрд╛рдо рдЕрдЪреВрдХрддреЗрдЪреНрдпрд╛ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдХреНрд░рдорд╛рд╕рд╣ рдирд┐рд╢реНрдЪрд┐рдд-рдмрд┐рдВрджреВрд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА рдЕрд╕реЗрд▓. рд╣рд╛ рдкрд░реНрдпрд╛рдп рдЦрд▒реНрдпрд╛ рдлреНрд▓реЛрдЯ рд╡реНрд╣реЕрд▓реНрдпреВрдЪреНрдпрд╛ рдЬрд╡рд│ рдЕрд╕рд▓реНрдпрд╛рдиреЗ рдЖрдкрдг рд╡рд╛рдкрд░реВ.

using System;

namespace RandomDistribution
{
    public class SystemIntegerRandomGenerator : IRandomGenerator
    {
        private const int DefaultFactor = 100000;
        
        private readonly Random _generator = new Random();
        private readonly int _min;
        private readonly int _max;
        private readonly int _factor;


        public string Name => "System.Random.Next()";


        public SystemIntegerRandomGenerator(float min, float max, int factor = DefaultFactor)
        {
            _min = (int)min * factor;
            _max = (int)max * factor;
            _factor = factor;
        }


        public float Generate() => (float)_generator.Next(_min, _max) / _factor;
    }
}

System.Random.NextDouble() рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

рдпреЗрдереЗ рдореВрд▓реНрдпрд╛рдВрдЪреА рдирд┐рд╢реНрдЪрд┐рдд рд╢реНрд░реЗрдгреА [0; 1). рддреЗ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдПрдХрд╛рд╡рд░ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рд╕рд╛рдзреЗ рдЕрдВрдХрдЧрдгрд┐рдд рд╡рд╛рдкрд░рддреЛ: X * (max тИТ min) + min.

using System;

namespace RandomDistribution
{
    public class SystemDoubleRandomGenerator : IRandomGenerator
    {
        private readonly Random _generator = new Random();
        private readonly double _factor;
        private readonly float _min;


        public string Name => "System.Random.NextDouble()";


        public SystemDoubleRandomGenerator(float min, float max)
        {
            _factor = max - min;
            _min = min;
        }


        public float Generate() => (float)(_generator.NextDouble() * _factor) + _min;
    }
}

UnityEngine.Random.Range() рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

UnityEngine.Random рд╕реНрдЯреЕрдЯрд┐рдХ рдХреНрд▓рд╛рд╕рдЪреА рд╣реА рдкрджреНрдзрдд рддреБрдореНрд╣рд╛рд▓рд╛ рдореВрд▓реНрдпрд╛рдВрдЪреА рд╢реНрд░реЗрдгреА рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ рдЖрдгрд┐ рдлреНрд▓реЛрдЯ рдкреНрд░рдХрд╛рд░ рдкрд░рдд рдХрд░рддреЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдгрддреЗрд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА.

using UnityEngine;

namespace RandomDistribution
{
    public class UnityRandomRangeGenerator : IRandomGenerator
    {
        private readonly float _min;
        private readonly float _max;


        public string Name => "UnityEngine.Random.Range()";


        public UnityRandomRangeGenerator(float min, float max)
        {
            _min = min;
            _max = max;
        }


        public float Generate() => Random.Range(_min, _max);
    }
}

UnityEngine.Random.value рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

рд╕реНрдЯреЕрдЯрд┐рдХ рдХреНрд▓рд╛рд╕ UnityEngine рдЪреЗ рдореВрд▓реНрдп рдЧреБрдгрдзрд░реНрдо. рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд╢реНрд░реЗрдгреАрддреВрди рдлреНрд▓реЛрдЯ рдкреНрд░рдХрд╛рд░ рдорд┐рд│рд╡рддреЗ [0; 1). System.Random.NextDouble() рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рддрд╛рдирд╛ рддреЗ рджрд┐рд▓реЗрд▓реНрдпрд╛ рд░реЗрдВрдЬрд╡рд░ рддреНрдпрд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░реВ.

using UnityEngine;

namespace RandomDistribution
{
    public class UnityRandomValueGenerator : IRandomGenerator
    {
        private readonly float _factor;
        private readonly float _min;


        public string Name => "UnityEngine.Random.value";


        public UnityRandomValueGenerator(float min, float max)
        {
            _factor = max - min;
            _min = min;
        }


        public float Generate() => (float)(Random.value * _factor) + _min;
    }
}

Unity.Mathematics.Random.NextFloat() рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

Unity.Mathematics.Random рдХреНрд▓рд╛рд╕рдЪреА NextFloat() рдкрджреНрдзрдд рдлреНрд▓реЛрдЯ рдкреНрд░рдХрд╛рд░рд╛рдЪрд╛ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рджреЗрддреЗ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдореВрд▓реНрдпрд╛рдВрдЪреА рд╢реНрд░реЗрдгреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдПрдХрдореЗрд╡ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдореБрджреНрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА Unity.Mathematics.Random рдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдгрд╛рд▓рд╛ рдХрд╛рд╣реА рдмрд┐рдпрд╛ рджреЗрдКрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓ - рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдЖрдкрдг рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд╣реЛрдгрд╛рд░реЗ рдЕрдиреБрдХреНрд░рдо рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреЗ рдЯрд╛рд│реВ.

using Unity.Mathematics;

namespace RandomDistribution
{
    public class UnityMathematicsRandomValueGenerator : IRandomGenerator
    {
        private Random _generator;
        private readonly float _min;
        private readonly float _max;


        public string Name => "Unity.Mathematics.Random.NextFloat()";


        public UnityMathematicsRandomValueGenerator(float min, float max)
        {
            _min = min;
            _max = max;
            _generator = new Random();
            _generator.InitState(unchecked((uint)System.DateTime.Now.Ticks));
        }


        public float Generate() => _generator.NextFloat(_min, _max);
    }
}

рдореЗрдирдХрдВрдЯреНрд░реЛрд▓рд░рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

IRandomGenerator рдЪреА рдЕрдиреЗрдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рддрдпрд╛рд░ рдЖрд╣реЗ. рдкреБрдвреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдиреБрдХреНрд░рдореЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреЗ рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдореА рдбреЗрдЯрд╛рд╕реЗрдЯ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рдЬрддрди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдпреБрдирд┐рдЯреАрдордзреНрдпреЗ рдПрдХ рджреЗрдЦрд╛рд╡рд╛ рдЖрдгрд┐ рдПрдХ рд▓рд╣рд╛рди рдореБрдЦреНрдп рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдпрд╛рд░ рдХрд░реВ, рдЬреЗ рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░реЗрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдЪ рд╡реЗрд│реА UI рд╕рд╣ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕реЗрд▓.

рдЪрд▓рд╛ рдбреЗрдЯрд╛рд╕реЗрдЯрдЪрд╛ рдЖрдХрд╛рд░ рдЖрдгрд┐ MF рд╡реНрд╣реЕрд▓реНрдпреВрдЬрдЪреА рд╢реНрд░реЗрдгреА рд╕реЗрдЯ рдХрд░реВрдпрд╛, рдЖрдгрд┐ рдПрдХ рдкрджреНрдзрдд рджреЗрдЦреАрд▓ рдорд┐рд│рд╡рд╛ рдЬреА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЖрдгрд┐ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЬрдирд░реЗрдЯрд░рдЪреА ре▓рд░реЗ рджреЗрддреЗ.

namespace RandomDistribution
{
    public class MainController : MonoBehaviour
    {
        private const int DefaultDatasetSize = 100000;

        public float MinValue = 0f;
        public float MaxValue = 100f;

        ...

        private IRandomGenerator[] CreateRandomGenerators()
        {
            return new IRandomGenerator[]
            {
                new SystemIntegerRandomGenerator(MinValue, MaxValue),
                new SystemDoubleRandomGenerator(MinValue, MaxValue),
                new UnityRandomRangeGenerator(MinValue, MaxValue),
                new UnityRandomValueGenerator(MinValue, MaxValue),
                new UnityMathematicsRandomValueGenerator(MinValue, MaxValue)
            };
        }

        ...
    }
}

рдЖрддрд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рддрдпрд╛рд░ рдХрд░реВ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдбреЗрдЯрд╛ рдирд┐рд░реНрдорд┐рддреА рдордЬрдХреВрд░ рдкреНрд░рд╡рд╛рд╣рд╛рдд (csv рд╕реНрд╡рд░реВрдкрд╛рдд) рд░реЗрдХреЙрд░реНрдбрд┐рдВрдЧрд╕рд╣ рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реА рдЬрд╛рдИрд▓. рдкреНрд░рддреНрдпреЗрдХ IRandomGenerator рдЪреА рдореВрд▓реНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреНрдпрд╛рдЪрд╛ рд╕реНрд╡рддрдГрдЪрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд╕реНрддрдВрдн рд╡рд╛рдЯрдк рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдкрд╣рд┐рд▓реНрдпрд╛ рдУрд│реАрдд рдЬрдирд░реЗрдЯрд░рдЪреЗ рдирд╛рд╡ рдЕрд╕рддреЗ.

namespace RandomDistribution
{
    public class MainController : MonoBehaviour
    {
        ...
		
        private void GenerateCsvDataSet(TextWriter writer, int dataSetSize, params IRandomGenerator[] generators)
        {
            const char separator = ',';
            int lastIdx = generators.Length - 1;

            // write header
            for (int j = 0; j <= lastIdx; j++)
            {
                writer.Write(generators[j].Name);
                if (j != lastIdx)
                    writer.Write(separator);
            }
            writer.WriteLine();

            // write data
            for (int i = 0; i <= dataSetSize; i++)
            {
                for (int j = 0; j <= lastIdx; j++)
                {
                    writer.Write(generators[j].Generate());
                    if (j != lastIdx)
                        writer.Write(separator);
                }

                if (i != dataSetSize)
                    writer.WriteLine();
            }
        }

        ...
    }
}

рдЖрддрд╛ рдлрдХреНрдд GenerateCsvDataSet рдореЗрдердбрд▓рд╛ рдХреЙрд▓ рдХрд░рдгреЗ рдЖрдгрд┐ рдирд┐рдХрд╛рд▓ рдПрдХрд╛ рдлрд╛рдИрд▓рдордзреНрдпреЗ рд╕реЗрд╡реНрд╣ рдХрд░рдгреЗ, рдХрд┐рдВрд╡рд╛ рдПрдВрдб рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░реВрди рд░рд┐рд╕рд┐рд╡реНрд╣рд┐рдВрдЧ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░ рдиреЗрдЯрд╡рд░реНрдХрджреНрд╡рд╛рд░реЗ рдбреЗрдЯрд╛ рддреНрд╡рд░рд┐рдд рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдХрд░рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ. рд╕рд░реНрд╡реНрд╣рд░.

namespace RandomDistribution
{
    public class MainController : MonoBehaviour
    {
        ...
		
        public void GenerateCsvDataSet(string path, int dataSetSize, params IRandomGenerator[] generators)
        {
            using (var writer = File.CreateText(path))
            {
                GenerateCsvDataSet(writer, dataSetSize, generators);
            }
        }


        public string GenerateCsvDataSet(int dataSetSize, params IRandomGenerator[] generators)
        {
            using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture))
            {
                GenerateCsvDataSet(writer, dataSetSize, generators);
                return writer.ToString();
            }
        }

        ...
    }
}

рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рд╕реВрддреНрд░реЗ рдпреЗрдереЗ рдЖрд╣реЗрдд рдЧрд┐рдЯреЕрдм.

рдирд┐рдХрд╛рд▓

рдХреЛрдгрддрд╛рд╣реА рдЪрдорддреНрдХрд╛рд░ рдШрдбрд▓рд╛ рдирд╛рд╣реА. рддреНрдпрд╛рдВрдирд╛ рдЬреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрд╣реЗ рддреЗрдЪ рддреНрдпрд╛рдВрдирд╛ рдорд┐рд│рд╛рд▓реЗ - рд╕рд░реНрд╡ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рд╖рдбреНрдпрдВрддреНрд░рд╛рдВрдЪреНрдпрд╛ рдЗрд╢рд╛рд░реЗрд╢рд┐рд╡рд╛рдп рд╕рдорд╛рди рд╡рд┐рддрд░рдг. рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░ рдЖрд▓реЗрдЦ рдЯрд╛рдХрдгреНрдпрд╛рдд рдорд▓рд╛ рдореБрджреНрджрд╛ рджрд┐рд╕рдд рдирд╛рд╣реА - рддреЗ рд╕рд░реНрд╡ рдЕрдВрджрд╛рдЬреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджрд░реНрд╢рд╡рддрд╛рдд.

рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдЖрд╣реЗ:
BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ

рд╕рд░реНрд╡ рдкрд╛рдЪ рдкрд┐рдвреАрдЪреНрдпрд╛ рдкрджреНрдзрддреАрдВрдордзреВрди рд╡рд┐рдорд╛рдирд╛рд╡рд░реАрд▓ рдЕрдиреБрдХреНрд░рдорд╛рдВрдЪреЗ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди:
BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ

рдЖрдгрд┐ 3D рдордзреНрдпреЗ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди. рдореА рдлрдХреНрдд System.Random.Next() рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реЛрдбрддреЛ рдЬреЗрдгреЗрдХрд░реВрди рдПрдХрд╕рд╛рд░рдЦреНрдпрд╛ рд╕рд╛рдордЧреНрд░реАрдЪрд╛ рд╕рдореВрд╣ рддрдпрд╛рд░ рд╣реЛрдК рдирдпреЗ.
BlessRNG рдХрд┐рдВрд╡рд╛ рдирд┐рд╖реНрдкрдХреНрд╖рддреЗрд╕рд╛рдареА RNG рддрдкрд╛рд╕рдд рдЖрд╣реЗ

рдпреБрдирд┐рдЯреАрдЗрдВрдЬрд┐рдирдЪреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдгрд╛рд╡рд┐рд╖рдпреАрдЪреНрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рдиреЗрдд рд╕рд╛рдВрдЧрд┐рддрд▓реЗрд▓реА рдХрдерд╛. рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдкрдгреЗ рд╕реНрд╡рддрдГрдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдЭрд╛рд▓реА рдирд╛рд╣реА: рдПрдХрддрд░ рддреА рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдЪреБрдХреАрдЪреА рд╣реЛрддреА рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдирдВрддрд░ рдЗрдВрдЬрд┐рдирдордзреНрдпреЗ рдХрд╛рд╣реАрддрд░реА рдмрджрд▓рд▓реЗ рдЖрд╣реЗ. рдкрдг рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

DDoS рд╕рдВрд░рдХреНрд╖рдг, VPS VDS рд╕рд░реНрд╡реНрд╣рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдЗрдЯрд╕рд╛рдареА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реЗрджреА рдХрд░рд╛ ЁЯФе рдбреАрдбреЙрд╕ рд╕рдВрд░рдХреНрд╖рдгрд╛рд╕рд╣ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ, рд╡реНрд╣реАрдкреАрдПрд╕ (VPS) рд╡реНрд╣реАрдбреАрдПрд╕ (VDS) рд╕рд░реНрд╡реНрд╣рд░реНрд╕ рдЦрд░реЗрджреА рдХрд░рд╛ | ProHoster