BlessRNG āĻŦāĻž āĻ¨ā§āϝāĻžāĻ¯ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ RNG āĻšā§‡āĻ• āĻ•āϰāĻž

BlessRNG āĻŦāĻž āĻ¨ā§āϝāĻžāĻ¯ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ RNG āĻšā§‡āĻ• āĻ•āϰāĻž

āϗ⧇āĻŽ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡, āφāĻĒāύāĻžāϕ⧇ āĻĒā§āϰāĻžāϝāĻŧāĻļāχ āĻāϞ⧋āĻŽā§‡āϞ⧋āϤāĻžāϰ āϏāĻžāĻĨ⧇ āĻ•āĻŋāϛ⧁ āĻŦ⧇āρāϧ⧇ āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇: āĻāϰ āϜāĻ¨ā§āϝ āχāωāύāĻŋāϟāĻŋāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϰāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāϰ āϏāĻŽāĻžāĻ¨ā§āϤāϰāĻžāϞ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāĨ¤ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāĻ•āĻŦāĻžāϰ, āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇, āφāĻŽāĻŋ āϧāĻžāϰāĻŖāĻž āĻĒ⧇āϝāĻŧ⧇āĻ›āĻŋāϞāĻžāĻŽ āϝ⧇ āωāĻ­āϝāĻŧāχ āĻ­āĻŋāĻ¨ā§āύāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ (āϝāĻĻāĻŋāĻ“ āϤāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āϏāĻŽāĻžāύ āĻŦāĻŋāϤāϰāĻŖ āĻĨāĻžāĻ•āĻž āωāϚāĻŋāϤ)āĨ¤

āϤāĻžāϰāĻĒāϰ⧇ āϤāĻžāϰāĻž āĻŦāĻŋāĻļāĻĻ⧇ āϝāĻžāύāύāĻŋ - āĻāϟāĻŋ āϝāĻĨ⧇āĻˇā§āϟ āĻ›āĻŋāϞ āϝ⧇ System.Random-āĻ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āϏāĻŽāĻ¸ā§āϤ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰ⧇āϛ⧇āĨ¤ āĻāĻ–āύ āφāĻŽāϰāĻž āĻāϟāĻŋāϕ⧇ āφāϰāĻ“ āĻŦāĻŋāĻļāĻĻ⧇ āĻĻ⧇āĻ–āĻžāϰ āĻāĻŦāĻ‚ āĻāĻ•āϟ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ: āĻ•āϤāϟāĻž "āĻĒāĻ•ā§āώāĻĒāĻžāϤāĻŽā§‚āϞāĻ•" āĻŦāĻž āĻ…āύ⧁āĻŽāĻžāύāϝ⧋āĻ—ā§āϝ RNG, āĻāĻŦāĻ‚ āϕ⧋āύāϟāĻŋ āĻŦ⧇āϛ⧇ āύ⧇āĻŦāĨ¤ āϤāĻĻ⧁āĻĒāϰāĻŋ, āφāĻŽāĻŋ āϤāĻžāĻĻ⧇āϰ "āϏāϤāϤāĻž" āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻ•āĻžāϧāĻŋāĻ•āĻŦāĻžāϰ āĻŦāĻŋāϰ⧋āϧāĻĒā§‚āĻ°ā§āĻŖ āĻŽāϤāĻžāĻŽāϤ āĻļ⧁āύ⧇āĻ›āĻŋ - āφāϏ⧁āύ āĻ˜ā§‹āώāĻŋāϤ āĻĢāϞāĻžāĻĢāϞāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻĢāϞāĻžāĻĢāϞāϗ⧁āϞāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āϤ⧁āϞāύāĻž āĻ•āϰ⧇ āϤāĻž āĻŦā§‹āĻāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋāĨ¤

āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āĻļāĻŋāĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻŦāĻž āφāϰāĻāύāϜāĻŋ āφāϏāϞ⧇ āφāϰāĻāύāϜāĻŋ

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āύāĻŽā§āĻŦāϰ āĻœā§‡āύāĻžāϰ⧇āϟāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ āĻšāύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ "āĻĒāϰ⧀āĻ•ā§āώāĻž" āĻŦāĻŋāĻ­āĻžāϗ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻāϞ⧋āĻŽā§‡āϞ⧋ āϏāĻ‚āĻ–ā§āϝāĻž (RN) āĻšāϞ āĻ•āĻŋāϛ⧁ āĻāϞ⧋āĻŽā§‡āϞ⧋ (āĻŦāĻŋāĻļ⧃āĻ™ā§āĻ–āϞ) āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āĻāĻ•āϟāĻŋ āĻ•ā§āϰāĻŽ, āϝāĻž āĻāύāĻŸā§āϰāĻĒāĻŋāϰ āωāĻ¤ā§āϏāĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻāϟāĻŋ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻ•ā§āϰāĻŽ āϝāĻžāϰ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āϕ⧋āύāĻ“ āĻ—āĻžāĻŖāĻŋāϤāĻŋāĻ• āύāĻŋāϝāĻŧāĻŽ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāϰāĻ¸ā§āĻĒāϰ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āύāϝāĻŧ - āϤāĻžāĻĻ⧇āϰ āϕ⧋āύāĻ“ āĻ•āĻžāϰāĻŖ āĻāĻŦāĻ‚ āĻĒā§āϰāĻ­āĻžāĻŦ āϏāĻŽā§āĻĒāĻ°ā§āĻ• āύ⧇āχāĨ¤

āϝāĻž āĻāϞ⧋āĻŽā§‡āϞ⧋ āϏāĻ‚āĻ–ā§āϝāĻž āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āϤāĻžāϕ⧇ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āύāĻŽā§āĻŦāϰ āĻœā§‡āύāĻžāϰ⧇āϟāϰ (RNG) āĻŦāϞ⧇āĨ¤ āĻĻ⧇āϖ⧇ āĻŽāύ⧇ āĻšāĻŦ⧇ āϝ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁āχ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āϝāĻĻāĻŋ āϤāĻ¤ā§āĻ¤ā§āĻŦ āĻĨ⧇āϕ⧇ āĻ…āύ⧁āĻļā§€āϞāύ⧇ āϚāϞ⧇ āϝāĻžāχ, āϤāĻžāĻšāϞ⧇ āφāϏāϞ⧇ āĻāχ āϧāϰāύ⧇āϰ āĻ•ā§āϰāĻŽ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻāϤ āϏāĻšāϜ āύāϝāĻŧāĨ¤

āĻ•āĻžāϰāĻŖāϟāĻŋ āφāϧ⧁āύāĻŋāĻ• āĻ­ā§‹āĻ•ā§āϤāĻž āχāϞ⧇āĻ•āĻŸā§āϰāύāĻŋāĻ•ā§āϏ⧇ āĻāĻ•āχ āĻŦāĻŋāĻļ⧃āĻ™ā§āĻ–āϞāĻžāϰ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻŋ āĻ›āĻžāĻĄāĻŧāĻž, āĻāϞ⧋āĻŽā§‡āϞ⧋ āϏāĻ‚āĻ–ā§āϝāĻžāϗ⧁āϞāĻŋ āĻāϞ⧋āĻŽā§‡āϞ⧋ āĻšāĻ“āϝāĻŧāĻž āĻŦāĻ¨ā§āϧ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āĻœā§‡āύāĻžāϰ⧇āϟāϰ āĻ¸ā§āĻĒāĻˇā§āϟāϤāχ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĢāĻžāĻ‚āĻļāύ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻšāϝāĻŧāĨ¤ āφāχāϟāĻŋ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āϰ āĻŦ⧇āĻļ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āĻŦāĻŋāĻļ⧇āώāĻ¤ā§āĻŦ⧇āϰ āϜāĻ¨ā§āϝ, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϗ⧁āϰ⧁āϤāϰ āϏāĻŽāĻ¸ā§āϝāĻž (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‹āĻ—ā§āϰāĻžāĻĢāĻŋ), āϤāĻŦ⧇ āĻ…āĻ¨ā§āϝāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ—ā§āϰāĻšāĻŖāϝ⧋āĻ—ā§āϝ āϏāĻŽāĻžāϧāĻžāύ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ āϞāĻŋāĻ–āϤ⧇ āĻšāĻŦ⧇ āϝāĻž āĻĢāĻŋāϰ⧇ āφāϏāĻŦ⧇, āϝāĻĻāĻŋāĻ“ āϏāĻ¤ā§āϝāĻŋāĻ•āĻžāϰ⧇āϰ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϏāĻ‚āĻ–ā§āϝāĻž āύāϝāĻŧ, āϤāĻŦ⧇ āϝāϤāϟāĻž āϏāĻŽā§āĻ­āĻŦ āϤāĻžāĻĻ⧇āϰ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ - āϤāĻĨāĻžāĻ•āĻĨāĻŋāϤ āϏāĻŋāωāĻĄā§‹-āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϏāĻ‚āĻ–ā§āϝāĻž (PRN)āĨ¤ āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽāϕ⧇ āϏāĻŋāωāĻĄā§‹āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āύāĻŽā§āĻŦāϰ āĻœā§‡āύāĻžāϰ⧇āϟāϰ (PRNG) āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤

āĻāĻ•āϟāĻŋ PRNG āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦ⧇āĻļ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āϰāϝāĻŧ⧇āϛ⧇, āϤāĻŦ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋ āĻĒā§āϰāĻ¤ā§āϝ⧇āϕ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ• āĻšāĻŦ⧇:

  1. āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āϏ⧂āϚāύāĻž āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ.

    PRNG āĻāϰ āϕ⧋āύ⧋ āĻāύāĻŸā§āϰāĻĒāĻŋāϰ āĻ‰ā§ŽāϏ āύ⧇āχ, āϤāĻžāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āφāϗ⧇ āĻāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ–ā§āϝāĻž (āĻŦāĻž āϭ⧇āĻ•ā§āϟāϰ) āĻšāĻŋāϏāĻžāĻŦ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻāϕ⧇ āĻŦā§€āϜ (āĻāϞ⧋āĻŽā§‡āϞ⧋ āĻŦā§€āϜ) āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤ āĻĒā§āϰāĻžāϝāĻŧāĻļāχ, āĻĒā§āϰāϏ⧇āϏāϰ āϘāĻĄāĻŧāĻŋ āĻ•āĻžāωāĻ¨ā§āϟāĻžāϰ āĻŦāĻž āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϏāĻŽāϝāĻŧ⧇āϰ āϏāĻ‚āĻ–ā§āϝāĻžāϏ⧂āϚāĻ• āϏāĻŽāϤ⧁āĻ˛ā§āϝ āĻāĻ•āϟāĻŋ āĻŦā§€āϜ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤

  2. āĻ•ā§āϰāĻŽ āĻĒā§āϰāϜāύāύāϝ⧋āĻ—ā§āϝāϤāĻžāĨ¤

    PRNG āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āύāĻŋāĻ°ā§āĻŖāϝāĻŧāĻŦāĻžāĻĻā§€, āϤāĻžāχ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•āĻ•āϰāϪ⧇āϰ āϏāĻŽāϝāĻŧ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āĻŦā§€āϜ āĻ…āύāĻ¨ā§āϝāĻ­āĻžāĻŦ⧇ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ āĻ•ā§āϰāĻŽ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤ āĻāϰ āĻŽāĻžāύ⧇ āĻšāϞ āϝ⧇ āĻāĻ•āχ āĻŦā§€āϜ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• PRNG (āĻ­āĻŋāĻ¨ā§āύ āϏāĻŽāϝāĻŧ⧇, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽā§‡, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĄāĻŋāĻ­āĻžāχāϏ⧇) āĻāĻ•āχ āĻ•ā§āϰāĻŽ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇āĨ¤

āφāĻĒāύāĻžāϕ⧇ PRNG āĻāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϝ⧁āĻ•ā§āϤ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝāϤāĻž āĻŦāĻ¨ā§āϟāύāϟāĻŋāĻ“ āϜāĻžāύāϤ⧇ āĻšāĻŦ⧇ - āĻāϟāĻŋ āϕ⧋āύ āϏāĻ‚āĻ–ā§āϝāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āϕ⧋āύ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻžāϰ āϏāĻžāĻĨ⧇āĨ¤ āĻĒā§āϰāĻžāϝāĻŧāĻļāχ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŦāĻŋāϤāϰāĻŖ āĻŦāĻž āĻ…āĻ­āĻŋāĻ¨ā§āύ āĻŦāĻŋāϤāϰāĻŖāĨ¤
BlessRNG āĻŦāĻž āĻ¨ā§āϝāĻžāĻ¯ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ RNG āĻšā§‡āĻ• āĻ•āϰāĻž
āϏāĻžāϧāĻžāϰāĻŖ āĻŦāĻŋāϤāϰāĻŖ (āĻŦāĻžāĻŽ) āĻāĻŦāĻ‚ āĻ…āĻ­āĻŋāĻ¨ā§āύ āĻŦāĻŋāϤāϰāĻŖ (āĻĄāĻžāύ)

āϧāϰāĻž āϝāĻžāĻ• āφāĻŽāĻžāĻĻ⧇āϰ 24 āĻĒāĻ•ā§āώ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻ¨ā§āϝāĻžāĻ¯ā§āϝ āĻŽā§ƒāĻ¤ā§āϝ⧁ āφāϛ⧇āĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻāϟāĻŋ āϟāϏ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āĻāĻ•āϟāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž 1/24 āĻāϰ āϏāĻŽāĻžāύ āĻšāĻŦ⧇ (āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āύāĻŽā§āĻŦāϰ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻžāϰ āϏāĻŽāĻžāύ)āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ…āύ⧇āĻ•āϗ⧁āϞāĻŋ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰ⧇āύ āĻāĻŦāĻ‚ āĻĢāϞāĻžāĻĢāϞāϗ⧁āϞāĻŋ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰ⧇āύ, āφāĻĒāύāĻŋ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻŦ⧇āύ āϝ⧇ āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϰāĻžāĻ¨ā§āϤāϗ⧁āϞāĻŋ āĻĒā§āϰāĻžāϝāĻŧ āĻāĻ•āχ āĻĢā§āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¨ā§āϏāĻŋ āϏāĻš āĻĒāĻĄāĻŧ⧇ āϗ⧇āϛ⧇āĨ¤ āĻŽā§‚āϞāϤ, āĻāχ āĻĄāĻžāχāϟāĻŋāϕ⧇ āĻ…āĻ­āĻŋāĻ¨ā§āύ āĻŦāĻŋāϤāϰāĻŖ āϏāĻš āĻāĻ•āϟāĻŋ RNG āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āĻŦāĻžāϰ⧇ āĻāχ 10āϟāĻŋ āĻĒāĻžāĻļāĻž āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰ⧇āύ āĻāĻŦāĻ‚ āĻŽā§‹āϟ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻ—āĻŖāύāĻž āĻ•āϰ⧇āύ? āĻāϰ āϜāĻ¨ā§āϝ āĻ…āĻ­āĻŋāĻ¨ā§āύāϤāĻž āĻŦāϜāĻžāϝāĻŧ āϰāĻžāĻ–āĻž āĻšāĻŦ⧇? āύāĻž. āĻĒā§āϰāĻžāϝāĻŧāĻļāχ, āĻĒāϰāĻŋāĻŽāĻžāĻŖāϟāĻŋ 125 āĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āĻšāĻŦ⧇, āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻ•āĻŋāϛ⧁ āĻ—āĻĄāĻŧ āĻŽāĻžāύāĨ¤ āĻāĻŦāĻ‚ āĻĢāϞāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻŽāύāĻ•āĻŋ āĻāĻ•āϟāĻŋ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāĻžāϰ āφāϗ⧇, āφāĻĒāύāĻŋ āĻŽā§‹āϟāĻžāĻŽā§āϟāĻŋāĻ­āĻžāĻŦ⧇ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇āϰ āĻĢāϞāĻžāĻĢāϞ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻ•āĻžāϰāĻŖ āĻšāϞ āĻ—āĻĄāĻŧ āĻ¸ā§āϕ⧋āϰ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āϏāĻ‚āĻ–ā§āϝāĻ• āĻ•āĻŽā§āĻŦāĻŋāύ⧇āĻļāύ āφāϛ⧇āĨ¤ āĻāϟāĻŋ āĻĨ⧇āϕ⧇ āϝāϤ āĻĻā§‚āϰ⧇, āĻ•āĻŽ āϏāĻ‚āĻŽāĻŋāĻļā§āϰāĻŖ - āĻāĻŦāĻ‚ āϏ⧇āχ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€, āĻ•ā§āώāϤāĻŋāϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž āĻ•āĻŽāĨ¤ āϝāĻĻāĻŋ āĻāχ āϤāĻĨā§āϝāϟāĻŋ āĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻŦ⧇ āĻāϟāĻŋ āĻ…āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āϘāĻŖā§āϟāĻžāϰ āφāĻ•ā§ƒāϤāĻŋāϰ āĻ…āύ⧁āϰ⧂āĻĒ āĻšāĻŦ⧇āĨ¤ āĻ…āϤāĻāĻŦ, āĻ•āĻŋāϛ⧁ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āϏāĻš, 10 āĻĄāĻžāχāϏ⧇āϰ āĻāĻ•āϟāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϕ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŦāĻŋāϤāϰāĻŖ āϏāĻš āĻāĻ•āϟāĻŋ RNG āĻŦāϞāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āφāϰ⧇āĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāχ āϏāĻŽāϝāĻŧ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻŽāĻžāύ⧇ - āĻāĻ•āϟāĻŋ āϞāĻ•ā§āĻˇā§āϝ⧇ āĻļ⧁āϟāĻŋāĻ‚. āĻļā§āϝ⧁āϟāĻžāϰāϟāĻŋ āĻāĻ•āϟāĻŋ RNG āĻšāĻŦ⧇ āϝāĻž āĻ—ā§āϰāĻžāĻĢ⧇ āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āĻāĻ• āĻœā§‹āĻĄāĻŧāĻž āϏāĻ‚āĻ–ā§āϝāĻž (x, y) āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤
BlessRNG āĻŦāĻž āĻ¨ā§āϝāĻžāĻ¯ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ RNG āĻšā§‡āĻ• āĻ•āϰāĻž
āϏāĻŽā§āĻŽāϤ āĻšāύ āϝ⧇ āĻŦāĻžāĻŽ āĻĻāĻŋāϕ⧇āϰ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻœā§€āĻŦāύ⧇āϰ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ - āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŦāĻŋāϤāϰāĻŖ āϏāĻš āĻāĻ•āϟāĻŋ RNGāĨ¤ āϤāĻŦ⧇ āφāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āĻ…āĻ¨ā§āϧāĻ•āĻžāϰ āφāĻ•āĻžāĻļ⧇ āϤāĻžāϰāĻžāϗ⧁āϞāĻŋ āĻ›āĻĄāĻŧāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, āϤāĻŦ⧇ āĻ…āĻ­āĻŋāĻ¨ā§āύ āĻŦāĻŋāϤāϰāĻŖ āϏāĻš RNG āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒā§āϰāĻžāĻĒā§āϤ āϏāĻ āĻŋāĻ• āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϟāĻŋ āφāϰāĻ“ āωāĻĒāϝ⧁āĻ•ā§āϤāĨ¤ āϏāĻžāϧāĻžāϰāĻŖāĻ­āĻžāĻŦ⧇, āĻšāĻžāϤ⧇āϰ āĻ•āĻžāĻœā§‡āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻœā§‡āύāĻžāϰ⧇āϟāϰ āϚāϝāĻŧāύ āĻ•āϰ⧁āύāĨ¤

āĻāĻ–āύ āĻĒāĻŋāĻāύāϜāĻŋ āϏāĻŋāϕ⧋āϝāĻŧ⧇āĻ¨ā§āϏ⧇āϰ āĻāύāĻŸā§āϰāĻĒāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻž āϝāĻžāĻ•āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āϟāĻŋ āĻ•ā§āϰāĻŽ āφāϛ⧇ āϝāĻž āĻāχ āĻŽāϤ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ:

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 āĻšā§‡āĻ• āĻ•āϰāĻž
āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύāϗ⧁āϞāĻŋ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻĻ⧃āĻļā§āϝāĻŽāĻžāύ āĻšāϝāĻŧ⧇ āĻ“āϠ⧇āĨ¤ āĻāĻŦāĻ‚ āϝ⧇āĻšā§‡āϤ⧁ āϏāĻŋāϕ⧋āϝāĻŧ⧇āĻ¨ā§āϏ⧇āϰ āĻĄā§‡āϟāĻž āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āωāĻĒāĻžāϝāĻŧ⧇ āĻ…āĻ°ā§āĻĄāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ (āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻāϟāĻŋāϤ⧇ āĻ•āĻŽ āĻāύāĻŸā§āϰāĻĒāĻŋ āϰāϝāĻŧ⧇āϛ⧇), āĻāϟāĻŋ āϏ⧇āχ "āĻĒāĻ•ā§āώāĻĒāĻžāϤ"āϕ⧇ āϜāĻ¨ā§āĻŽ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻ¨ā§āϝ⧂āύāϤāĻŽ, āĻāχ āϜāĻžāϤ⧀āϝāĻŧ PRNG āĻāĻ•āϟāĻŋ āϏāĻŽāϤāϞ⧇ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ• āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϖ⧁āĻŦ āωāĻĒāϝ⧁āĻ•ā§āϤ āύāϝāĻŧāĨ¤

āφāϰ⧇āĻ•āϟāĻŋ āĻ•ā§āϰāĻŽ:

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 āĻšā§‡āĻ• āĻ•āϰāĻž
āĻāĻŦāĻ‚ āφāĻŦāĻžāϰ āύāĻŋāĻĻāĻ°ā§āĻļāύ. āϚāĻžāϰ āĻŽāĻžāĻ¤ā§āϰāĻžāϝāĻŧ āĻāĻ•āϟāĻŋ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āϰāĻž āφāϰ āϏāĻŽā§āĻ­āĻŦ āύāϝāĻŧāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āύāĻŋāĻĻāĻ°ā§āĻļāύ āĻāχ āĻŽāĻžāĻ¤ā§āϰāĻž āĻāĻŦāĻ‚ āĻŦāĻĄāĻŧ āĻŦ⧇āĻļā§€ āĻšāϤ⧇ āĻĒāĻžāϰ⧇.

āĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‹āĻ—ā§āϰāĻžāĻĢāĻŋāϤ⧇, āϝ⧇āĻ–āĻžāύ⧇ āĻĒāĻŋāφāϰāĻāύāϜāĻŋ-āϤ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻ•āĻ ā§‹āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āφāϰ⧋āĻĒ āĻ•āϰāĻž āĻšāϝāĻŧ, āĻāχ āϧāϰāύ⧇āϰ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻ¸ā§āĻĒāĻˇā§āϟāϤāχ āĻ…āĻ—ā§āϰāĻšāĻŖāϝ⧋āĻ—ā§āϝāĨ¤ āĻ…āϤāĻāĻŦ, āϤāĻžāĻĻ⧇āϰ āϗ⧁āĻŖāĻŽāĻžāύ āύāĻŋāĻ°ā§āϧāĻžāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻļ⧇āώ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž āφāĻŽāϰāĻž āĻāĻ–āύ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ•āϰāĻŦ āύāĻžāĨ¤ āĻŦāĻŋāώāϝāĻŧāϟāĻŋ āĻŦā§āϝāĻžāĻĒāĻ• āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āύāĻŋāĻŦāĻ¨ā§āϧ⧇āϰ āĻĻāĻžāĻŦāĻŋ āϰāĻžāϖ⧇āĨ¤

āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ•

āϝāĻĻāĻŋ āφāĻŽāϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻ•āĻŋāϛ⧁ āϜāĻžāύāĻŋ āύāĻž, āϤāĻžāĻšāϞ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāϟāĻŋ āύāĻŋāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰāĻŦ? āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϜāĻžāύ⧇āύ āύāĻž āϕ⧋āύ āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āϞāĻžāχāϟ āĻāϟāĻŋāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āϤāĻžāĻšāϞ⧇ āĻ•āĻŋ āϰāĻžāĻ¸ā§āϤāĻž āĻĒāĻžāϰ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ? āĻĢāϞāĻžāĻĢāϞ āĻ­āĻŋāĻ¨ā§āύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āχāωāύāĻŋāϟāĻŋāϤ⧇ āϕ⧁āĻ–ā§āϝāĻžāϤ āĻāϞ⧋āĻŽā§‡āϞ⧋āϤāĻžāϰ āϜāĻ¨ā§āϝāĻ“ āĻāĻ•āχ āĻ•āĻĨāĻžāĨ¤ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāϞ⧇ āĻāϟāĻŋ āĻ­āĻžāϞ, āϤāĻŦ⧇ āύāĻŋāĻŦāĻ¨ā§āϧ⧇āϰ āĻļ⧁āϰ⧁āϤ⧇ āωāĻ˛ā§āϞāĻŋāĻ–āĻŋāϤ āĻ—āĻ˛ā§āĻĒāϟāĻŋ āĻ•āĻžāĻ™ā§āĻ•ā§āώāĻŋāϤ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟāϤāĻžāϰ āĻ…āĻ­āĻžāĻŦ⧇āϰ āĻ•āĻžāϰāϪ⧇ āĻ…āĻŦāĻŋāĻ•āϞ āϘāĻŸā§‡āϛ⧇āĨ¤

āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āϜāĻžāύ⧇āύ āύāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϟ⧁āϞāϟāĻŋ āĻ•āĻžāϜ āĻ•āϰ⧇, āφāĻĒāύāĻŋ āĻāϟāĻŋ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻŦ⧇āύ āύāĻžāĨ¤ āϏāĻžāϧāĻžāϰāĻŖāĻ­āĻžāĻŦ⧇, āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ…āĻ¨ā§āϤāϤ āĻŦāĻŋāϤāϰāĻŖ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāϏ⧇āϛ⧇āĨ¤

āϏāĻŽāĻžāϧāĻžāύāϟāĻŋ āϏāĻšāϜ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ›āĻŋāϞ - āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰ⧁āύ, āωāĻĻā§āĻĻ⧇āĻļā§āϝāĻŽā§‚āϞāĻ• āϤāĻĨā§āϝ āĻĒā§āϰāĻžāĻĒā§āϤ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĢāϞāĻžāĻĢāϞāϗ⧁āϞāĻŋ āĻĻ⧇āϖ⧁āύāĨ¤

āĻĒāĻžāĻ ā§āϝ āĻŦāĻŋāώāϝāĻŧ

āχāωāύāĻŋāϟāĻŋāϤ⧇ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϏāĻ‚āĻ–ā§āϝāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āωāĻĒāĻžāϝāĻŧ āϰāϝāĻŧ⧇āϛ⧇ - āφāĻŽāϰāĻž āĻĒāĻžāρāϚāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇āĻ›āĻŋāĨ¤

  1. System.Random.Next()āĨ¤ āĻŽāĻžāύāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϰāĻŋāϏāϰ⧇ āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤
  2. System.Random.NextDouble()āĨ¤ [0 āĻĨ⧇āϕ⧇ āĻĒāϰāĻŋāϏāϰ⧇ āĻĻā§āĻŦāĻŋāϗ⧁āĻŖ āύāĻŋāĻ°ā§āϭ⧁āϞāϤāĻž āϏāĻ‚āĻ–ā§āϝāĻž āϤ⧈āϰāĻŋ āĻ•āϰ⧇; 1)āĨ¤
  3. UnityEngine.Random.Range()āĨ¤ āĻŽāĻžāύāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϰāĻŋāϏāϰ⧇ āĻāĻ•āĻ• āύāĻŋāĻ°ā§āϭ⧁āϞāϤāĻž āϏāĻ‚āĻ–ā§āϝāĻž (āĻĢā§āϞ⧋āϟ) āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤
  4. āχāωāύāĻŋāϟāĻŋ āχāĻžā§āϜāĻŋāύāĨ¤āĻāϞ⧋āĻŽā§‡āϞ⧋āĨ¤āĻŽā§‚āĻ˛ā§āϝāĨ¤ [0 āĻĨ⧇āϕ⧇ āĻĒāϰāĻŋāϏāϰ⧇ āĻāĻ•āĻ• āύāĻŋāĻ°ā§āϭ⧁āϞāϤāĻž āϏāĻ‚āĻ–ā§āϝāĻž (āĻĢā§āϞ⧋āϟ) āϤ⧈āϰāĻŋ āĻ•āϰ⧇; 1)āĨ¤
  5. Unity.Mathematics.Random.NextFloat()āĨ¤ āύāϤ⧁āύ āχāωāύāĻŋāϟāĻŋāϰ āĻ…āĻ‚āĻļāĨ¤ āĻ—āĻŖāĻŋāϤ āĻ—ā§āϰāĻ¨ā§āĻĨāĻžāĻ—āĻžāϰāĨ¤ āĻŽāĻžāύāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϰāĻŋāϏāϰ⧇ āĻāĻ•āĻ• āύāĻŋāĻ°ā§āϭ⧁āϞāϤāĻž āϏāĻ‚āĻ–ā§āϝāĻž (āĻĢā§āϞ⧋āϟ) āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤

āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ⧇āϰ āĻĒā§āϰāĻžāϝāĻŧ āϏāĻ°ā§āĻŦāĻ¤ā§āϰāχ 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, āĻŦāĻŋāĻ˛ā§āĻĄ āĻĒā§āϰāϤāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ, Mono, .NET āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ 2.0
  • āφāχāĻ“āĻāϏ
    — āχāωāύāĻŋāϟāĻŋ v2018.3.14f1, āĻŦāĻŋāĻ˛ā§āĻĄ āĻĒā§āϰāϤāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ, il2cpp, .NET āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ 2.0

āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ

āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϏāĻ‚āĻ–ā§āϝāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āωāĻĒāĻžāϝāĻŧ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āϤāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻ¤ā§āϝ⧇āϕ⧇āϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻŽā§‹āĻĄāĻŧāĻ• āĻ•ā§āϞāĻžāϏ āϞāĻŋāĻ–āĻŦ, āϝāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻž āωāϚāĻŋāϤ:

  1. āĻŽāĻžāύ⧇āϰ āĻĒāϰāĻŋāϏ⧀āĻŽāĻž āϏ⧇āϟ āĻ•āϰāĻžāϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž [āĻŽāĻŋāύāĻŋāϟ/āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ)āĨ¤ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏ⧇āϟ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤
  2. MF āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋāĨ¤ āϟāĻžāχāĻĒ āĻšāĻŋāϏāĻžāĻŦ⧇ float āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ•, āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āφāϰāĻ“ āϏāĻžāϧāĻžāϰāĻŖāĨ¤
  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 * (āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ − āĻŽāĻŋāύāĻŋāϟ) + āĻŽāĻŋāύāĻŋāϟāĨ¤

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 āĻāϰ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ

āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻ•ā§āϞāĻžāϏ āχāωāύāĻŋāϟāĻŋ āχāĻžā§āϜāĻŋāύ⧇āϰ āĻŽāĻžāύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāĨ¤ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϰāĻŋāϏāϰ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āĻĢā§āϞ⧋āϟ āϟāĻžāχāĻĒ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ [0; 1)āĨ¤ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ.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-āĻāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖāϕ⧇ āĻ•āĻŋāϛ⧁ āĻŦā§€āϜ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ - āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāϰāĻž āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•ā§āϰāĻŽ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻāĻĄāĻŧāĻžāϤ⧇ āĻĒāĻžāϰāĻŦāĨ¤

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();
            }
        }

        ...
    }
}

āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϏ⧂āĻ¤ā§āϰ⧇ āĻ GitLab.

Đ ĐĩĐˇŅƒĐģŅŒŅ‚Đ°Ņ‚Ņ‹

āϕ⧋āύ āĻ…āϞ⧌āĻ•āĻŋāĻ• āϘāϟāύāĻž āϘāĻŸā§‡āύāĻŋāĨ¤ āϤāĻžāϰāĻž āϝāĻž āφāĻļāĻž āĻ•āϰ⧇āĻ›āĻŋāϞ āϤāĻž āϤāĻžāϰāĻž āĻĒ⧇āϝāĻŧ⧇āϛ⧇ - āϏāĻŦ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āχ āώāĻĄāĻŧāϝāĻ¨ā§āĻ¤ā§āϰ⧇āϰ āχāĻ™ā§āĻ—āĻŋāϤ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻāĻ•āϟāĻŋ āϏāĻŽāĻžāύ āĻŦāĻŋāϤāϰāĻŖāĨ¤ āφāĻŽāĻŋ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡āϰ āϜāĻ¨ā§āϝ āĻĒ⧃āĻĨāĻ• āĻ—ā§āϰāĻžāĻĢ āĻ¸ā§āĻĨāĻžāĻĒāύ⧇āϰ āĻŦāĻŋāĻ¨ā§āĻĻ⧁ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻšā§āĻ›āĻŋ āύāĻž - āϤāĻžāϰāĻž āϏāĻŦāϗ⧁āϞāĻŋ āĻĒā§āϰāĻžāϝāĻŧ āĻāĻ•āχ āĻĢāϞāĻžāĻĢāϞ āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤

āĻŦāĻžāĻ¸ā§āϤāĻŦāϤāĻž āĻšāϞ:
BlessRNG āĻŦāĻž āĻ¨ā§āϝāĻžāĻ¯ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ RNG āĻšā§‡āĻ• āĻ•āϰāĻž

āϏāĻŽāĻ¸ā§āϤ āĻĒāĻžāρāϚāϟāĻŋ āĻĒā§āϰāϜāĻ¨ā§āĻŽā§‡āϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āϏāĻŽāϤāϞ⧇ āϏāĻŋāϕ⧋āϝāĻŧ⧇āĻ¨ā§āϏ⧇āϰ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ:
BlessRNG āĻŦāĻž āĻ¨ā§āϝāĻžāĻ¯ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ RNG āĻšā§‡āĻ• āĻ•āϰāĻž

āĻāĻŦāĻ‚ 3D āϤ⧇ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύāĨ¤ āφāĻŽāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ System.Random.Next() āĻāϰ āĻĢāϞāĻžāĻĢāϞ āϛ⧇āĻĄāĻŧ⧇ āĻĻ⧇āĻŦ āϝāĻžāϤ⧇ āĻāĻ•āϗ⧁āĻšā§āĻ› āĻ…āĻ­āĻŋāĻ¨ā§āύ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϤ⧈āϰāĻŋ āύāĻž āĻšāϝāĻŧāĨ¤
BlessRNG āĻŦāĻž āĻ¨ā§āϝāĻžāĻ¯ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ RNG āĻšā§‡āĻ• āĻ•āϰāĻž

āχāωāύāĻŋāϟāĻŋ āχāĻžā§āϜāĻŋāύ⧇āϰ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŦāĻ¨ā§āϟāύ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ­ā§‚āĻŽāĻŋāĻ•āĻžāϤ⧇ āĻ—āĻ˛ā§āĻĒāϟāĻŋ āĻŦāϞāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ°â€ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āύāĻŋāĻœā§‡āϕ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰ⧇āύāĻŋ: āĻšāϝāĻŧ āĻāϟāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϭ⧁āϞ āĻ›āĻŋāϞ, āĻŦāĻž āϤāĻžāϰāĻĒāϰ āĻĨ⧇āϕ⧇ āχāĻžā§āϜāĻŋāύ⧇ āĻ•āĻŋāϛ⧁ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϤāĻŦ⧇ āĻāĻ–āύ āφāĻŽāϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤāĨ¤

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster