BlessRNG เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบš RNG เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ

BlessRNG เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบš RNG เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ

เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบเบก, เบ—เปˆเบฒเบ™เบกเบฑเบเบˆเบฐเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ–เบตเป‰เบกเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเบชเบธเปˆเบก: Unity เบกเบต Random เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰, เปเบฅเบฐเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบเบฑเบšเบกเบฑเบ™เบกเบต System.Random. เบกเบตเบ„เบฑเป‰เบ‡เบซเบ™เบถเปˆเบ‡, เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบซเบ™เบถเปˆเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบ›เบฐเบ—เบฑเบšเปƒเบˆเบงเปˆเบฒเบ—เบฑเบ‡เบชเบญเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ„เบงเบ™เบˆเบฐเบกเบตเบเบฒเบ™เปเบˆเบเบขเบฒเบเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ).

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ” - เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เป„เบ›เบชเบนเปˆ System.Random เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”. เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเบงเบ”เป€เบšเบดเปˆเบ‡เบกเบฑเบ™เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เป‰เบงเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ: เบงเบดเบ—เบตเบเบฒเบ™ "เบญเบฐเบ„เบฐเบ•เบด" เบซเบผเบท RNGs เบ—เบตเปˆเบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰, เปเบฅเบฐเป€เบฅเบทเบญเบเบญเบฑเบ™เปƒเบ”. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเบดเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบ—เบตเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡เบเบฑเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบเปˆเบฝเบงเบเบฑเบš "เบ„เบงเบฒเบกเบŠเบทเปˆเบชเบฑเบ”" เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ - เปƒเบซเป‰เบฅเบญเบ‡เบ„เบดเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบ„เปเบฒเบ›เบฐเบเบฒเบ”เปเบ™เบงเปƒเบ”.

เป‚เบ„เบ‡เบเบฒเบ™เบเบฒเบ™เบชเบถเบเบชเบฒเบชเบฑเป‰เบ™เป† เบซเบผเบท RNG เปเบกเปˆเบ™เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง RNG

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบเปเบฒเป€เบ™เบตเบ”เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เป‰เบฒเบกเป„เบ›เบซเบฒเบžเบฒเบ "เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš".

เบ•เบปเบงเป€เบฅเบ Random (RN) เปเบกเปˆเบ™เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ Random (chaotic), เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡ entropy. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบ™เป‚เบ”เบเบเบปเบ”เบซเบกเบฒเบเบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เปƒเบ”เป† - เบžเบงเบเบกเบฑเบ™เบšเปเปˆเบกเบตเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบชเบฒเป€เบซเบ”เปเบฅเบฐเบœเบปเบ™เบเบฐเบ—เบปเบš.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบกเปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบชเป‰เบฒเบ‡เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบก (RNG). เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ›เบฐเบ–เบปเบก, เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบเบˆเบฒเบเบ—เบดเบ”เบชเบฐเบ”เบตเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบฑเบ™เบšเปเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบŠเบญเบšเปเบง algorithm เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเปเบฒเบ”เบฑเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เป€เบซเบ”เบœเบปเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ‚เบฒเบ”เบ„เบงเบฒเบกเบงเบธเปˆเบ™เบงเบฒเบเบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เป€เบญเป€เบฅเบฑเบเป‚เบ•เบฃเบ™เบดเบเบœเบนเป‰เบšเปเบฅเบดเป‚เบžเบเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก. เบ–เป‰เบฒเบšเปเปˆเบกเบตเบกเบฑเบ™, เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบกเบขเบธเบ”เป€เบŠเบปเบฒเป€เบ›เบฑเบ™เปเบšเบšเบชเบธเปˆเบก, เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบเปเบฒเป€เบ™เบตเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบเบฒเบเป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เปเบฒเบกเบฐเบ”เบฒเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡. เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบŠเปˆเบฝเบงเบŠเบฒเบ™เปƒเบ™เบ”เป‰เบฒเบ™เป„เบญเบ—เบตเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบš), เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบ„เบปเบ™เบญเบทเปˆเบ™เบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบˆเบฐเบเบฑเบšเบ„เบทเบ™เบกเบฒ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบกเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡, เปเบ•เปˆเปƒเบเป‰เบ„เบฝเบ‡เบ—เบตเปˆเบชเบธเบ”เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ - เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ•เบปเบงเป€เบฅเบ pseudo-random (PRN). เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒ pseudorandom generator (PRNG).

เบกเบตเบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡ PRNG, เปเบ•เปˆเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ„เบปเบ™:

  1. เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™.

    PRNG เบšเปเปˆเบกเบตเปเบซเบผเปˆเบ‡เบ‚เบญเบ‡ entropy, เบชเบฐเบ™เบฑเป‰เบ™เบกเบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปƒเบซเป‰เบชเบฐเบ–เบฒเบ™เบฐเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰. เบกเบฑเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบ (เบซเบผเบท vector) เปเบฅเบฐเป€เบญเบตเป‰เบ™เบงเปˆเบฒเป€เบกเบฑเบ” (เปเบเปˆเบ™เปเบšเบšเบชเบธเปˆเบก). เป€เบฅเบทเป‰เบญเบเป†, เป€เบ„เบทเปˆเบญเบ‡เบ™เบฑเบšเป‚เบกเบ‡เบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบซเบผเบทเบ•เบปเบงเป€เบฅเบเบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เป€เบงเบฅเบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบกเปˆเบ™เปƒเบŠเป‰เป€เบ›เบฑเบ™เป€เบกเบฑเบ”.

  2. เบเบฒเบ™เบชเบทเบšเบžเบฑเบ™เบ•เบฒเบกเบฅเบณเบ”เบฑเบš.

    PRNG เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบ•เบฑเป‰เบ‡เปƒเบˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบกเบฑเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบเปเบฒเบ™เบปเบ”เบฅเปเบฒเบ”เบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ PRNG เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเปเบเปˆเบ™เบ”เบฝเบงเบเบฑเบ™ (เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™) เบˆเบฐเบชเป‰เบฒเบ‡เบฅเปเบฒเบ”เบฑเบšเบ”เบฝเบงเบเบฑเบ™.

เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบนเป‰เบงเปˆเบฒเบเบฒเบ™เปเบˆเบเบขเบฒเบเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐ PRNG - เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบชเป‰เบฒเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปเบ™เบงเปƒเบ”. เบชเปˆเบงเบ™เบซเบผเบฒเบเบกเบฑเบ, เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบเปเบšเบšเบ›เบปเบเบเบฐเบ•เบดเบซเบผเบทเบเบฒเบ™เปเบˆเบเบขเบฒเบเปเบšเบšเบ”เบฝเบงเบเบฑเบ™.
BlessRNG เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบš RNG เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ
เบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเบ›เบปเบเบเบฐเบ•เบด (เบŠเป‰เบฒเบ) เปเบฅเบฐเบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเป€เบ›เบฑเบ™เป€เบญเบเบฐเบžเบฒเบš (เบ‚เบงเบฒ)

เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบ•เบฒเบเบ—เบตเปˆเบเบธเบ”เบ•เบดเบ—เปเบฒเบ—เบตเปˆเบกเบต 24 เบ”เป‰เบฒเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป‚เบเบ™เบกเบฑเบ™, เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบซเบ™เบถเปˆเบ‡เบˆเบฐเป€เบ—เบปเปˆเบฒเบเบฑเบš 1/24 (เบ„เบทเบเบฑเบ™เบเบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ•เบปเบงเป€เบฅเบเบญเบทเปˆเบ™). เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบเบฒเบ™เบ–เบดเป‰เบกเบซเบผเบฒเบเป†เบ„เบฑเป‰เบ‡เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš, เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเปเบ„เบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบซเบผเบธเบ”เบฅเบปเบ‡เป‚เบ”เบเบ›เบฐเบกเบฒเบ™เบ„เบงเบฒเบกเบ–เบตเปˆเบ”เบฝเบงเบเบฑเบ™. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบเบฒเบ™เป€เบชเบเบŠเบตเบงเบดเบ”เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™ RNG เบ—เบตเปˆเบกเบตเบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเป€เบ›เบฑเบ™เป€เบญเบเบฐเบžเบฒเบš.

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ–เบดเป‰เบก 10 เบ‚เบญเบ‡ dice เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเบ™เบฑเบšเบˆเบธเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”? เบˆเบฐเบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป€เบญเบเบฐเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™เบšเป? เบšเปเปˆ. เบชเปˆเบงเบ™เบซเบผเบฒเบเบกเบฑเบ, เบˆเปเบฒเบ™เบงเบ™เป€เบ‡เบดเบ™เบˆเบฐเบขเบนเปˆเปƒเบเป‰เบเบฑเบš 125 เบˆเบธเบ”, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป€เบ–เบดเบ‡เบšเบฒเบ‡เบกเบนเบ™เบ„เปˆเบฒเบชเบฐเป€เบฅเปˆเบ. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ–เบดเป‰เบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เบ„เบฐเป€เบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

เป€เบซเบ”เบœเบปเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบ„เบฐเปเบ™เบ™เบชเบฐเป€เบฅเปˆเบ. เป„เบเบˆเบฒเบเบกเบฑเบ™, เบเบฒเบ™เบ›เบฐเบชเบปเบกเบซเบ™เป‰เบญเบ - เปเบฅเบฐ, เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ•เปˆเปเบฒ. เบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบ–เบทเบเบชเบฐเปเบ”เบ‡เป€เบ›เบฑเบ™เบžเบฒเบš, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบฎเบนเบšเบŠเบปเบ‡เบ‚เบญเบ‡เบเบฐเบ”เบดเปˆเบ‡เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ”เป‰เบงเบเบเบฒเบ™เบเบทเบ”เบเบฒเบง, เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡ 10 dice เบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เบงเปˆเบฒ RNG เบ—เบตเปˆเบกเบตเบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเบ›เบปเบเบเบฐเบ•เบด.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡, เบžเบฝเบ‡เปเบ•เปˆเป€เบงเบฅเบฒเบ™เบตเป‰เบขเบนเปˆเป€เบ—เบดเบ‡เบเบปเบ™ - เบเบดเบ‡เปƒเบชเปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ. shooter เบˆเบฐเป€เบ›เบฑเบ™ RNG เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ„เบนเปˆเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบ (x, y) เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบเบฒเบŸ.
BlessRNG เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบš RNG เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ
เบ•เบปเบเบฅเบปเบ‡เป€เบซเบฑเบ™เบ”เบตเบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบŠเป‰เบฒเบเปเบกเปˆเบ™เปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเบŠเบตเบงเบดเบ”เบˆเบดเบ‡ - เบ™เบตเป‰เปเบกเปˆเบ™ RNG เบ—เบตเปˆเบกเบตเบเบฒเบ™เปเบˆเบเบขเบฒเบเบ›เบปเบเบเบฐเบ•เบด. เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเบฎเบนเบšเบ”เบฒเบงเปƒเบ™เบ—เป‰เบญเบ‡เบŸเป‰เบฒเบ—เบตเปˆเบกเบทเบ”เบกเบปเบง, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ RNG เบ—เบตเปˆเบกเบตเบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเป€เบ›เบฑเบ™เป€เบญเบเบฐเบžเบฒเบš, เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบงเปˆเบฒ. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เป€เบฅเบทเบญเบเป€เบ„เบทเปˆเบญเบ‡เบเปเบฒเป€เบ™เบตเบ”เป„เบŸเบŸเป‰เบฒเป‚เบ”เบเบญเบตเบ‡เบ•เบฒเบกเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบกเบท.

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš entropy เบ‚เบญเบ‡เบฅเปเบฒเบ”เบฑเบš 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, ...

เบ•เบปเบงเป€เบฅเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™ glance เบ—เปเบฒเบญเบดเบ” Random เปเบ™เบงเปƒเบ”? เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบ.
BlessRNG เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบš RNG เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ
เบกเบฑเบ™โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบ„เบทโ€‹เบงเปˆเบฒโ€‹เปƒเบเป‰โ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เป€เบญโ€‹เบเบฐโ€‹เบžเบฒเบšโ€‹, เปเบ•เปˆโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบญเปˆเบฒเบ™โ€‹เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹เบ‚เบญเบ‡โ€‹เบชเบญเบ‡โ€‹เบ•เบปเบงโ€‹เป€เบฅเบโ€‹เปเบฅเบฐโ€‹เบ•เบตโ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบžเบดโ€‹เบเบฑเบ”โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบเบปเบ™โ€‹, เบ—เปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ™เบตเป‰โ€‹:
BlessRNG เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบš RNG เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ
เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™. เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบ–เบทเบเบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเปƒเบ™เบ—เบฒเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™ (เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เบกเบต entropy เบ•เปˆเปเบฒ), เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ” "เบ„เบงเบฒเบกเบฅเปเบฒเบญเบฝเบ‡". เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ, 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 เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ
เปเบฅเบฐเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบฎเบนเบšเปเบšเบš. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เปƒเบ™เบชเบตเปˆเบกเบดเบ•เบด. เปเบ•เปˆเบฎเบนเบšเปเบšเบšเบ•เปˆเบฒเบ‡เป†เบชเบฒเบกเบฒเบ”เบกเบตเบขเบนเปˆเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เบตเป‰เปเบฅเบฐเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒ.

เปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบš, เบšเปˆเบญเบ™เบ—เบตเปˆเบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เปƒเบ™ PRNGs, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเป„เบ”เป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบžเบดเป€เบชเบ”เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบžเบทเปˆเบญเบ›เบฐเป€เบกเบตเบ™เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเปเบ•เบฐเบ•เป‰เบญเบ‡เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบซเบปเบงเบ‚เปเป‰เปเบกเปˆเบ™เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปเบฅเบฐเบชเบปเบกเบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบšเบปเบ”เบ„เบงเบฒเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบฎเบนเป‰เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™, เปเบฅเป‰เบงเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบเบฑเบšเบกเบฑเบ™? เบกเบฑเบ™เบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบ‚เป‰เบฒเบกเบ–เบฐเปœเบปเบ™เป„เบ”เป‰เบšเป เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเป„เบŸเบˆเบฐเบฅเบฒเบˆเบญเบ™เบญเบฑเบ™เปƒเบ”เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบฑเบ™? เบœเบปเบ™เบชเบฐเบ—เป‰เบญเบ™เบญเบฒเบ”เบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ Random notorious เปƒเบ™ Unity. เบกเบฑเบ™เบ”เบตเบ–เป‰เบฒเป€เบญเบเบฐเบชเบฒเบ™เป€เบ›เบตเบ”เป€เบœเบตเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบ•เปˆเป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเป„เบ”เป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เบเป‰เบญเบ™เบเบฒเบ™เบ‚เบฒเบ”เบ„เบงเบฒเบกเบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.

เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”, เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบกเบฑเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เป€เบงเบฅเบฒเป„เบ”เป‰เบกเบฒเป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบ.

เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เปเบกเปˆเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เปเบฅเบฐโ€‹เบ›เบฐโ€‹เบชเบดเบ”โ€‹เบ—เบดโ€‹เบœเบปเบ™ - เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบชเบฐโ€‹เบ–เบดโ€‹เบ•เบดโ€‹, เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบธเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบ‡โ€‹เปเบฅเบฐโ€‹เป€เบšเบดเปˆเบ‡โ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹.

เบงเบดเบŠเบฒเบเบฒเบ™เบชเบถเบเบชเบฒ

เบกเบตเบซเบฅเบฒเบเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบกเปƒเบ™ Unity - เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเบซเป‰เบฒ.

  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 algorithm, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบเบฒเบ™เปเบˆเบเบขเบฒเบเป€เบ›เบฑเบ™เป€เบญเบเบฐเบžเบฒเบš).

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™.

เบงเบดเบ—เบตเบเบฒเบ™

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ‚เบฝเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบกเป‚เบ”เบเปƒเบŠเป‰เปเบ•เปˆเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ•เบทเปˆเบกเบญเบตเบ.

เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบฅเปเบฒเบ”เบฑเบšเปเบกเปˆเบ™ 100 เบ•เบปเบงเป€เบฅเบ.
เบŠเปˆเบงเบ‡เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเบชเบธเปˆเบกเปเบกเปˆเบ™ [0, 100).

เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบˆเบฒเบโ€‹เบซเบผเบฒเบโ€‹เป€เบงโ€‹เบ—เบตโ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹:

  • Windows
    โ€” Unity v2018.3.14f1, เป‚เปเบ”เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™, Mono, .NET Standard 2.0
  • MacOS
    โ€” Unity v2018.3.14f1, เป‚เปเบ”เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™, Mono, .NET Standard 2.0
    โ€” Unity v5.6.4p4, เป‚เปเบ”เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™, Mono, .NET Standard 2.0
  • Android
    โ€” Unity v2018.3.14f1, เบชเป‰เบฒเบ‡เบ•เปเปˆเบญเบธเบ›เบฐเบเบญเบ™, Mono, .NET Standard 2.0
  • iOS
    โ€” Unity v2018.3.14f1, เบชเป‰เบฒเบ‡เบ•เปเปˆเบญเบธเบ›เบฐเบเบญเบ™, il2cpp, .NET Standard 2.0

ะ ะตะฐะปะธะทะฐั†ะธั

เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบก. เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เบปเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ‚เบฝเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™ wrapper เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เป€เบŠเบดเปˆเบ‡เบ„เบงเบ™เบชเบฐเบซเบ™เบญเบ‡:

  1. เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปˆเบฒ [min/max). เบˆเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบœเปˆเบฒเบ™เบ•เบปเบงเบชเป‰เบฒเบ‡.
  2. เบงเบดเบ—เบตเบเบฒเบ™เบเบฑเบšเบ„เบทเบ™ MF. เปƒเบซเป‰เป€เบฅเบทเบญเบ float เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”, เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เปเบกเปˆเบ™เบ—เบปเปˆเบงเป„เบ›เบซเบผเบฒเบ.
  3. เบŠเบทเปˆเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบฑเบšเบ„เบทเบ™เป€เบ›เบฑเบ™เบ„เปˆเบฒเบŠเบทเปˆเป€เบ•เบฑเบกเบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบฎเบฝเบ™ + เบŠเบทเปˆเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡ MF.

เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เบ›เบฐเบเบฒเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบชเบฐเปเบ”เบ‡เป‚เบ”เบเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš IRandomGenerator:

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

        float Generate();
    }
}

เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” System.Random.Next()

เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปˆเบฒ, เปเบ•เปˆเบกเบฑเบ™เบˆเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบˆเปเบฒเบ™เบงเบ™เบˆเปเบฒเบ™เบงเบ™, เปเบ•เปˆ float เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™. เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบ•เบตเบ„เบงเบฒเบกเบˆเปเบฒเบ™เบงเบ™ integer เป€เบ›เบฑเบ™ float, เบซเบผเบทเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบ„เปˆเบฒเป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เบซเบผเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”, เบŠเบปเบ”เป€เบŠเบตเบเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบฅเบฐเบ”เบฑเบšเบเบฒเบ‡เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ„เบปเบ™. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบˆเบฐเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบˆเบธเบ”เบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบกเบฑเบ™เปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเบเบฒเบ™เบฅเบญเบเบ•เบปเบงเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡.

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) + เบ™โ€‹.

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 static class เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปˆเบฒเปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบ›เบฐเป€เบžเบ” float. เบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

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.Random เบเบฑเบšเบ„เบทเบ™เบ›เบฐเป€เบžเบ” float เบˆเบฒเบเบ‚เบญเบšเป€เบ‚เบ”เบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบ„เปˆเบฒ [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()

เบงเบดเบ—เบตเบเบฒเบ™ NextFloat() เบ‚เบญเบ‡ Unity.Mathematics.Random class เบชเบปเปˆเบ‡เบ„เบทเบ™เบˆเบธเบ”เบฅเบญเบเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” float เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบŠเปˆเบงเบ‡เบ‚เบญเบ‡เบ„เปˆเบฒ. เบเบฒเบ™ nuance เบžเบฝเบ‡เปเบ•เปˆเปเบกเปˆเบ™เบงเปˆเบฒเปเบ•เปˆเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ 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);
    }
}

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” MainController

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฒเบเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ IRandomGenerator เปเบกเปˆเบ™เบเบฝเบกเบžเป‰เบญเบก. เบ•เปเปˆเป„เบ›, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบฅเปเบฒเบ”เบฑเบšเปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡ scene เปเบฅเบฐ script MainController เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปƒเบ™ Unity, เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบš UI.

เปƒเบซเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปˆเบฒ MF, เปเบฅเบฐเบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™ array เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบเปเบฒเป€เบ™เบตเบ”เป„เบŸเบŸเป‰เบฒเบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเปเบฅเบฐเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบ.

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.

ะ ะตะทัƒะปัŒั‚ะฐั‚ั‹

เบšเปเปˆเบกเบตเบชเบดเปˆเบ‡เบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเป„เบ”เป‰เบฎเบฑเบš - เปƒเบ™เบ—เบธเบเบเปเบฅเบฐเบ™เบต, เบเบฒเบ™เปเบˆเบเบขเบฒเบเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ hint เบ‚เบญเบ‡ conspiracies. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เป€เบซเบฑเบ™โ€‹เบˆเบธเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบงเบฒเบ‡โ€‹เบเบฒโ€‹เบŸโ€‹เปเบเบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบซเบฒเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เป€เบงโ€‹เบ—เบต - เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบ›เบฐโ€‹เบกเบฒเบ™โ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹.

เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เปเบกเปˆเบ™:
BlessRNG เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบš RNG เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ

เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบžเบฒเบšเบ‚เบญเบ‡เบฅเบณเบ”เบฑเบšเบขเบนเปˆเป€เบ—เบดเบ‡เบเบปเบ™เบˆเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ—เบฑเบ‡เปเบปเบ”เบซเป‰เบฒ:
BlessRNG เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบš RNG เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ

เปเบฅเบฐเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เปƒเบ™ 3D. เบ‚เป‰เบญเบเบˆเบฐเบ›เปˆเบญเบเปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡ System.Random.Next() เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบกเบตเป€เบ™เบทเป‰เบญเปƒเบ™เบ—เบตเปˆเบ„เบทเบเบฑเบ™.
BlessRNG เบซเบผเบทเบเบฒเบ™เบเบงเบ”เบชเบญเบš RNG เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบเบธเบ”เบ•เบดเบ—เปเบฒ

เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบšเบญเบเปƒเบ™เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบœเปˆเบเบฐเบˆเบฒเบเบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡ UnityEngine.Random เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เป€เบฅเบทเป‰เบกเบ„เบทเบ™เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡: เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบซเบผเบทเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป„เบ”เป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ. เปเบ•เปˆเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเปเบ™เปˆเปƒเบˆเบงเปˆเบฒ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™