เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹

เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹

เชฐเชฎเชคเชจเชพ เชตเชฟเช•เชพเชธเชฎเชพเช‚, เชคเชฎเชพเชฐเซ‡ เช˜เชฃเซ€เชตเชพเชฐ เชฐเซ‡เชจเซเชกเชฎเชจเซ‡เชธ เชธเชพเชฅเซ‡ เช•เช‚เชˆเช• เชฌเชพเช‚เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡: เช† เชฎเชพเชŸเซ‡ เชฏเซเชจเชฟเชŸเซ€เชจเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เชฐเซ‡เชจเซเชกเชฎ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชฎเชพเช‚เชคเชฐ เชธเชฟเชธเซเชŸเชฎ. เชฐเซ‡เชจเซเชกเชฎ เช›เซ‡. เชเช• เชธเชฎเชฏเซ‡, เชเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ, เชฎเชจเซ‡ เชเชตเซ€ เช›เชพเชช เชฎเชณเซ€ เช•เซ‡ เชฌเช‚เชจเซ‡ เช…เชฒเช— เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ (เชœเซ‹เช•เซ‡ เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เชธเชฎเชพเชจ เชตเชฟเชคเชฐเชฃ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช).

เชชเช›เซ€ เชคเซ‡เช“ เชตเชฟเช—เชคเซ‹เชฎเชพเช‚ เช—เชฏเชพ เชจเชนเซ€เช‚ - เชคเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชธเช‚เช•เซเชฐเชฎเชฃ. เชฐเซ‡เชจเซเชกเชฎ เชฌเชงเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชธเซเชงเชพเชฐเซ‡ เช›เซ‡. เชนเชตเซ‡ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชตเชงเซ เชตเชฟเช—เชคเชฎเชพเช‚ เชœเซ‹เชตเชพเชจเซเช‚ เช…เชจเซ‡ เชฅเซ‹เชกเซเช‚ เชธเช‚เชถเซ‹เชงเชจ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚: "เชชเช•เซเชทเชชเชพเชคเซ€" เช…เชฅเชตเชพ เช…เชจเซเชฎเชพเชจเชฟเชค RNGs เช•เซ‡เชŸเชฒเชพ เช›เซ‡ เช…เชจเซ‡ เช•เชฏเซ‹ เชชเชธเช‚เชฆ เช•เชฐเชตเซ‹. เชคเชฆเซเชชเชฐเชพเช‚เชค, เชฎเซ‡เช‚ เชคเซ‡เชฎเชจเซ€ "เชชเซเชฐเชพเชฎเชพเชฃเชฟเช•เชคเชพ" เชตเชฟเชถเซ‡ เชตเชฟเชฐเซ‹เชงเชพเชญเชพเชธเซ€ เชฎเช‚เชคเชตเซเชฏเซ‹ เชเช• เช•เชฐเชคเชพ เชตเชงเซ เชตเชพเชฐ เชธเชพเช‚เชญเชณเซเชฏเชพ เช›เซ‡ - เชšเชพเชฒเซ‹ เช เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช เช•เซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชœเชพเชนเซ‡เชฐ เช•เชฐเซ‡เชฒเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเชฐเช–เชพเชตเซ‡ เช›เซ‡.

เชธเช‚เช•เซเชทเชฟเชชเซเชค เชถเซˆเช•เซเชทเชฃเชฟเช• เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ เช…เชฅเชตเชพ RNG เชตเชพเชธเซเชคเชตเชฎเชพเช‚ RNG เช›เซ‡

เชœเซ‹ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชฐเซ‡เชจเซเชกเชฎ เชจเช‚เชฌเชฐ เชœเชจเชฐเซ‡เชŸเชฐเซเชธเชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เชคเชฐเชค เชœ "เชชเชฐเซ€เช•เซเชทเชฃ" เชตเชฟเชญเชพเช— เชชเชฐ เชœเชˆ เชถเช•เซ‹ เช›เซ‹.

เชฐเซ‡เชจเซเชกเชฎ เชจเช‚เชฌเชฐเซเชธ (RN) เช เช•เซ‡เชŸเชฒเซ€เช• เชฐเซ‡เชจเซเชกเชฎ (เช…เชธเซเชคเชตเซเชฏเชธเซเชค) เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซ‡เชฆเชพ เชฅเชฏเซ‡เชฒ เชธเช‚เช–เซเชฏเชพเช“เชจเซ‹ เช•เซเชฐเชฎ เช›เซ‡, เชœเซ‡ เชเชจเซเชŸเซเชฐเซ‹เชชเซ€เชจเซ‹ เชธเซเชคเซเชฐเซ‹เชค เช›เซ‡. เชเชŸเชฒเซ‡ เช•เซ‡, เช† เชเช• เชเชตเซ‹ เช•เซเชฐเชฎ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชคเชคเซเชตเซ‹ เช•เซ‹เชˆเชชเชฃ เช—เชพเชฃเชฟเชคเชฟเช• เช•เชพเชฏเชฆเชพ เชฆเซเชตเชพเชฐเชพ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เชจเชฅเซ€ - เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เช•เซ‹เชˆ เช•เชพเชฐเชฃ เช…เชจเซ‡ เช…เชธเชฐ เชธเช‚เชฌเช‚เชง เชจเชฅเซ€.

เชœเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชจเช‚เชฌเชฐ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชคเซ‡เชจเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชจเช‚เชฌเชฐ เชœเชจเชฐเซ‡เชŸเชฐ (RNG) เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡. เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชฌเชงเซเช‚ เชชเซเชฐเชพเชฅเชฎเชฟเช• เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‹ เช†เชชเชฃเซ‡ เชธเชฟเชฆเซเชงเชพเช‚เชคเชฅเซ€ เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช, เชคเซ‹ เชนเช•เซ€เช•เชคเชฎเชพเช‚ เช†เชตเชพ เช•เซเชฐเชฎ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเซ‹ เช…เชฎเชฒ เช•เชฐเชตเซ‹ เชเชŸเชฒเซเช‚ เชธเชฐเชณ เชจเชฅเซ€.

เช•เชพเชฐเชฃ เช†เชงเซเชจเชฟเช• เช—เซเชฐเชพเชนเช• เช‡เชฒเซ‡เช•เซเชŸเซเชฐเซ‹เชจเชฟเช•เซเชธเชฎเชพเช‚ เชธเชฎเชพเชจ เช…เชฐเชพเชœเช•เชคเชพเชจเซ€ เช—เซ‡เชฐเชนเชพเชœเชฐเซ€เชฎเชพเช‚ เชฐเชนเซ‡เชฒเซเช‚ เช›เซ‡. เชคเซ‡เชจเชพ เชตเชฟเชจเชพ, เชฐเซ‡เชจเซเชกเชฎ เชจเช‚เชฌเชฐเซ‹ เชฐเซ‡เชจเซเชกเชฎ เชฌเชจเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชฎเชจเซเช‚ เชœเชจเชฐเซ‡เชŸเชฐ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชฆเชฒเซ€เชฒเซ‹เชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เช•เชพเชฐเซเชฏเชฎเชพเช‚ เชซเซ‡เชฐเชตเชพเชฏ เช›เซ‡. เช†เช‡เชŸเซ€ เช•เซเชทเซ‡เชคเซเชฐเชจเซ€ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เชตเชฟเชถเซ‡เชทเชคเชพเช“ เชฎเชพเชŸเซ‡, เช† เชเช• เช—เช‚เชญเซ€เชฐ เชธเชฎเชธเซเชฏเชพ เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเช‚เช•เซ‡เชคเชฒเชฟเชชเซ€), เชชเชฐเช‚เชคเซ เช…เชจเซเชฏ เชฒเซ‹เช•เซ‹ เชฎเชพเชŸเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เช‰เช•เซ‡เชฒ เช›เซ‡.

เชเชฒเซเช—เซ‹เชฐเชฟเชงเชฎ เชฒเช–เชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เซ‡ เชœเซ‡ เช–เชฐเซ‡เช–เชฐ เชฐเซ‡เชจเซเชกเชฎ เชจเช‚เชฌเชฐเซ‹ เชจ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชชเชฐเชค เช†เชตเชถเซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชจเซ€ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซ€ เชจเชœเซ€เช• - เช•เชนเซ‡เชตเชพเชคเชพ เชธเซเชฏเซเชกเซ‹-เชฐเซ‡เชจเซเชกเชฎ เชจเช‚เชฌเชฐเซเชธ (เชชเซ€เช†เชฐเชเชจ). เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเซ‡ เชธเซเชฏเซเชกเซ‹เชฐเซ‡เชจเซเชกเชฎ เชจเช‚เชฌเชฐ เชœเชจเชฐเซ‡เชŸเชฐ (PRNG) เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

PRNG เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชจเซ€เชšเซ‡เชจเชพ เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชธเซเชธเช‚เช—เชค เชฐเชนเซ‡เชถเซ‡:

  1. เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชชเซเชฐเชพเชฐเช‚เชญเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชค.

    PRNG เชชเชพเชธเซ‡ เชเชจเซเชŸเซเชฐเซ‹เชชเซ€เชจเซ‹ เช•เซ‹เชˆ เชธเซเชคเซเชฐเซ‹เชค เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เชคเซ‡เชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชธเซเชฅเชฟเชคเชฟ เช†เชชเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชคเซ‡ เชธเช‚เช–เซเชฏเชพ (เช…เชฅเชตเชพ เชตเซ‡เช•เซเชŸเชฐ) เชคเชฐเซ€เช•เซ‡ เชธเซเชชเชทเซเชŸ เชฅเชฏเซ‡เชฒ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฌเซ€เชœ (เชฐเซ‡เชจเซเชกเชฎ เชฌเซ€เชœ) เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช˜เชฃเซ€เชตเชพเชฐ, เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช•เซเชฒเซ‹เช• เช•เชพเช‰เชจเซเชŸเชฐ เช…เชฅเชตเชพ เชธเชฟเชธเซเชŸเชฎ เชธเชฎเชฏเชจเซ€ เชธเช‚เช–เซเชฏเชพเชคเซเชฎเช• เชธเชฎเช•เช•เซเชทเชจเซ‹ เชฌเซ€เชœ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡.

  2. เช•เซเชฐเชฎ เชชเซเชฐเชœเชจเชจเช•เซเชทเชฎเชคเชพ.

    PRNG เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชจเชฟเชฐเซเชฃเชพเชฏเช• เช›เซ‡, เชคเซ‡เชฅเซ€ เช†เชฐเช‚เชญ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชฌเซ€เชœ เช…เชจเซ‹เช–เซ€ เชฐเซ€เชคเซ‡ เชธเช‚เช–เซเชฏเชพเช“เชจเซ‹ เชธเชฎเช—เซเชฐ เชญเชพเชตเชฟ เช•เซเชฐเชฎ เชจเช•เซเช•เซ€ เช•เชฐเซ‡ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชเช• เชœ เชฌเซ€เชœ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เช•เชฐเชพเชฏเซ‡เชฒ เช…เชฒเช— PRNG (เช…เชฒเช— เชธเชฎเชฏเซ‡, เชœเซเชฆเชพ เชœเซเชฆเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฎเชพเช‚, เชตเชฟเชตเชฟเชง เช‰เชชเช•เชฐเชฃเซ‹ เชชเชฐ) เชธเชฎเชพเชจ เช•เซเชฐเชฎ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชถเซ‡.

เชคเชฎเชพเชฐเซ‡ PRNG เชจเซ€ เชฒเชพเช•เซเชทเชฃเชฟเช•เชคเชพ เชฆเชฐเซเชถเชพเชตเชคเซ€ เชธเช‚เชญเชพเชตเชจเชพ เชตเชฟเชคเชฐเชฃ เชชเชฃ เชœเชพเชฃเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ - เชคเซ‡ เช•เชฏเชพ เชจเช‚เชฌเชฐเซ‹ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชถเซ‡ เช…เชจเซ‡ เช•เชˆ เชธเช‚เชญเชพเชตเชจเชพ เชธเชพเชฅเซ‡. เชฎเซ‹เชŸเซ‡เชญเชพเช—เซ‡ เช† เช•เชพเช‚ เชคเซ‹ เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชคเชฐเชฃ เช…เชฅเชตเชพ เชธเชฎเชพเชจ เชตเชฟเชคเชฐเชฃ เชนเซ‹เชฏ เช›เซ‡.
เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹
เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชคเชฐเชฃ (เชกเชพเชฌเซ‡) เช…เชจเซ‡ เชธเชฎเชพเชจ เชตเชฟเชคเชฐเชฃ (เชœเชฎเชฃเซ‡)

เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ 24 เชฌเชพเชœเซเช“ เชธเชพเชฅเซ‡ เชตเชพเชœเชฌเซ€ เชฎเซƒเชคเซเชฏเซ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชŸเซ‰เชธ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชเช• เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ 1/24 (เชฌเซ€เชœเชพ เชจเช‚เชฌเชฐ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ เชœเซ‡เชŸเชฒเซ€ เชœ) เชนเชถเซ‡. เชœเซ‹ เชคเชฎเซ‡ เช˜เชฃเชพ เชฅเซเชฐเซ‹ เช•เชฐเซ‹ เช›เซ‹ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เชœเซ‹เชถเซ‹ เช•เซ‡ เชฌเชงเซ€ เช•เชฟเชจเชพเชฐเซ€เช“ เชฒเช—เชญเช— เชธเชฎเชพเชจ เช†เชตเชฐเซเชคเชจ เชธเชพเชฅเซ‡ เชฌเชนเชพเชฐ เชชเชกเซ€ เช›เซ‡. เช†เชตเชถเซเชฏเช•เชชเชฃเซ‡, เช† เชกเชพเช‡เชจเซ‡ เชธเชฎเชพเชจ เชตเชฟเชคเชฐเชฃ เชธเชพเชฅเซ‡ RNG เช—เชฃเซ€ เชถเช•เชพเชฏ.

เชœเซ‹ เชคเชฎเซ‡ เช†เชฎเชพเช‚เชฅเซ€ 10 เชกเชพเช‡เชธ เชเช•เชธเชพเชฅเซ‡ เชซเซ‡เช‚เช•เซ‹ เช…เชจเซ‡ เช•เซเชฒ เชชเซ‹เชˆเชจเซเชŸ เช—เชฃเซ‹ เชคเซ‹ เชถเซเช‚ เชฅเชถเซ‡? เชถเซเช‚ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชเช•เชฐเซ‚เชชเชคเชพ เชœเชณเชตเชพเชถเซ‡? เชจเชพ. เชฎเซ‹เชŸเซ‡เชญเชพเช—เซ‡, เชฐเช•เชฎ 125 เชชเซ‹เช‡เชจเซเชŸเชจเซ€ เชจเชœเซ€เช• เชนเชถเซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, เช•เซ‡เชŸเชฒเชพเช• เชธเชฐเซ‡เชฐเชพเชถ เชฎเซ‚เชฒเซเชฏ เชธเซเชงเซ€. เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชฅเซเชฐเซ‹ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เชชเชฃ, เชคเชฎเซ‡ เชญเชพเชตเชฟ เชชเชฐเชฟเชฃเชพเชฎเชจเซ‹ เช…เช‚เชฆเชพเชœ เชฒเช—เชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เช•เชพเชฐเชฃ เช เช›เซ‡ เช•เซ‡ เชธเชฐเซ‡เชฐเชพเชถ เชธเซเช•เซ‹เชฐ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเซŒเชฅเซ€ เชตเชงเซ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชธเช‚เชฏเซ‹เชœเชจเซ‹ เช›เซ‡. เชคเซ‡เชจเชพเชฅเซ€ เชœเซ‡เชŸเชฒเซเช‚ เชฆเซ‚เชฐ เช›เซ‡, เช“เช›เชพ เชธเช‚เชฏเซ‹เชœเชจเซ‹ - เช…เชจเซ‡ เชคเซ‡ เชฎเซเชœเชฌ, เชจเซเช•เชธเชพเชจเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ เช“เช›เซ€ เช›เซ‡. เชœเซ‹ เช† เชกเซ‡เชŸเชพเชจเซ‡ เชตเชฟเชเซเชฏเซเช…เชฒเชพเชˆเช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡, เชคเซ‹ เชคเซ‡ เช…เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เช˜เช‚เชŸเชกเซ€เชจเชพ เช†เช•เชพเชฐ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เชถเซ‡. เชคเซ‡เชฅเซ€, เช…เชฎเซเช• เชธเซเชŸเซเชฐเซ‡เชš เชธเชพเชฅเซ‡, 10 เชกเชพเช‡เชธเชจเซ€ เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชคเชฐเชฃ เชธเชพเชฅเซ‡ RNG เช•เชนเซ€ เชถเช•เชพเชฏ.

เชฌเซ€เชœเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ, เชซเช•เซเชค เช† เชธเชฎเชฏเซ‡ เชชเซเชฒเซ‡เชจเชฎเชพเช‚ - เชฒเช•เซเชทเซเชฏ เชชเชฐ เชถเซ‚เชŸเชฟเช‚เช—. เชถเซ‚เชŸเชฐ เชเช• RNG เชนเชถเซ‡ เชœเซ‡ เช—เซเชฐเชพเชซ เชชเชฐ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชฏเซ‡เชฒ เชธเช‚เช–เซเชฏเชพเช“เชจเซ€ เชœเซ‹เชกเซ€ (x, y) เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡.
เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹
เชธเช‚เชฎเชค เชฅเชพเช“ เช•เซ‡ เชกเชพเชฌเซ€ เชฌเชพเชœเซเชจเซ‹ เชตเชฟเช•เชฒเซเชช เชตเชพเชธเซเชคเชตเชฟเช• เชœเซ€เชตเชจเชจเซ€ เชจเชœเซ€เช• เช›เซ‡ - เช† เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชคเชฐเชฃ เชธเชพเชฅเซ‡เชจเซ‹ เช†เชฐเชเชจเชœเซ€ เช›เซ‡. เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเชพเชฐเซ‡ เช…เช‚เชงเชพเชฐเชพเชตเชพเชณเชพ เช†เช•เชพเชถเชฎเชพเช‚ เชคเชพเชฐเชพเช“ เชตเซ‡เชฐเชตเชฟเช–เซ‡เชฐ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชเช• เชธเชฎเชพเชจ เชตเชฟเชคเชฐเชฃ เชธเชพเชฅเซ‡ 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, ...

เชชเซเชฐเชฅเชฎ เชจเชœเชฐเชฎเชพเช‚ เช† เชธเช‚เช–เซเชฏเชพเช“ เช•เซ‡เชŸเชฒเซ€ เชฐเซ‡เชจเซเชกเชฎ เช›เซ‡? เชšเชพเชฒเซ‹ เชตเชฟเชคเชฐเชฃ เชคเชชเชพเชธเซ€เชจเซ‡ เชถเชฐเซ‚ เช•เชฐเซ€เช.
เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹
เชคเซ‡ เชเช•เชธเชฎเชพเชจเชจเซ€ เชจเชœเซ€เช• เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเซ‡ เชฌเซ‡ เชธเช‚เช–เซเชฏเชพเช“เชจเซ‹ เช•เซเชฐเชฎ เชตเชพเช‚เชšเซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชชเซเชฒเซ‡เชจ เชชเชฐ เช•เซ‹เช“เชฐเซเชกเชฟเชจเซ‡เชŸเซเชธ เชคเชฐเซ€เช•เซ‡ เช…เชฐเซเชฅเช˜เชŸเชจ เช•เชฐเซ‹, เชคเซ‹ เชคเชฎเชจเซ‡ เช† เชฎเชณเชถเซ‡:
เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹
เชชเซ‡เชŸเชฐเซเชจ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชฆเซƒเชถเซเชฏเชฎเชพเชจ เชฌเชจเซ‡ เช›เซ‡. เช…เชจเซ‡ เชคเซเชฏเชพเชฐเชฅเซ€ เช•เซเชฐเชฎเชฎเชพเช‚เชจเซ‹ เชกเซ‡เชŸเชพ เชšเซ‹เช•เซเช•เชธ เชฐเซ€เชคเซ‡ เช“เชฐเซเชกเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชคเซ‡เชจเซ€ เชเชจเซเชŸเซเชฐเซ‹เชชเซ€ เช“เช›เซ€ เช›เซ‡), เช† เชคเซ‡ เช–เซ‚เชฌ เชœ "เชชเซ‚เชฐเซเชตเช—เซเชฐเชน" เชจเซ‡ เชœเชจเซเชฎ เช†เชชเซ€ เชถเช•เซ‡ เช›เซ‡. เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ, เช†เชตเชพ 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, ...

เชชเซเชฒเซ‡เชจเชฎเชพเช‚ เชชเชฃ เช…เชนเซ€เช‚ เชฌเชงเซเช‚ เชธเชพเชฐเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡:
เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹
เชšเชพเชฒเซ‹ เชตเซ‹เชฒเซเชฏเซเชฎเชฎเชพเช‚ เชœเซ‹เชˆเช (เชเช• เชธเชฎเชฏเซ‡ เชคเซเชฐเชฃ เชธเช‚เช–เซเชฏเชพเช“ เชตเชพเช‚เชšเซ‹):
เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹
เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชชเซ‡เชŸเชฐเซเชจ. เชšเชพเชฐ เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช‚ เชตเชฟเชเซเชฏเซเชฒเชพเช‡เชเซ‡เชถเชจ เชฌเชจเชพเชตเชตเซเช‚ เชนเชตเซ‡ เชถเช•เซเชฏ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เชชเซ‡เชŸเชฐเซเชจ เช† เชชเชฐเชฟเชฎเชพเชฃ เชชเชฐ เช…เชจเซ‡ เชฎเซ‹เชŸเชพ เชชเชฐ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เช•เซเชฐเชฟเชชเซเชŸเซ‹เช—เซเชฐเชพเชซเซ€เชฎเชพเช‚, เชœเซเชฏเชพเช‚ 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) เช›เซ‡.

เช•เซ‡เชŸเชฒเชพเช• เชฒเช•เซเชทเซเชฏ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเชฐเชฅเซ€ เชกเซ‡เชŸเชพ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹:

  • เชตเชฟเชจเซเชกเซ‹เช
    โ€” Unity v2018.3.14f1, เชเชกเชฟเชŸเชฐ เชฎเซ‹เชก, เชฎเซ‹เชจเซ‹, .NET เชธเซเชŸเชพเชจเซเชกเชฐเซเชก 2.0
  • MacOS
    โ€” Unity v2018.3.14f1, เชเชกเชฟเชŸเชฐ เชฎเซ‹เชก, เชฎเซ‹เชจเซ‹, .NET เชธเซเชŸเชพเชจเซเชกเชฐเซเชก 2.0
    โ€” เชฏเซเชจเชฟเชŸเซ€ v5.6.4p4, เชเชกเชฟเชŸเชฐ เชฎเซ‹เชก, เชฎเซ‹เชจเซ‹, .NET เชธเซเชŸเชพเชจเซเชกเชฐเซเชก 2.0
  • , Android
    โ€” Unity v2018.3.14f1, เช‰เชชเช•เชฐเชฃ เชฆเซ€เช  เชฌเชฟเชฒเซเชก, Mono, .NET เชงเซ‹เชฐเชฃ 2.0
  • iOS
    โ€” Unity 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 * (เชฎเชนเชคเซเชคเชฎ โˆ’ เชฎเชฟเชจเชฟเชŸ) + เชฎเชฟเชจเชฟเชŸ.

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

        ...
    }
}

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชธเซ‚เชคเซเชฐเซ‹ เชฎเซ GitLab.

เชฐเชฟเชเชฒเซเชŸ

เช•เซ‹เชˆ เชšเชฎเชคเซเช•เชพเชฐ เชฅเชฏเซ‹ เชจเชฅเซ€. เชคเซ‡เช“ เชœเซ‡ เช…เชชเซ‡เช•เซเชทเชพ เชฐเชพเช–เซ‡ เช›เซ‡ เชคเซ‡ เชœ เชคเซ‡เชฎเชจเซ‡ เชฎเชณเซเชฏเซเช‚ - เชคเชฎเชพเชฎ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เช•เชพเชตเชคเชฐเชพเช‚เชจเชพ เชธเช‚เช•เซ‡เชค เชตเชฟเชจเชพ เชธเชฎเชพเชจ เชตเชฟเชคเชฐเชฃ. เชฎเชจเซ‡ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเซเชธ เชฎเชพเชŸเซ‡ เช…เชฒเช— เช—เซเชฐเชพเชซ เชฎเซ‚เช•เชตเชพเชจเซ‹ เชฎเซเชฆเซเชฆเซ‹ เชฆเซ‡เช–เชพเชคเซ‹ เชจเชฅเซ€ - เชคเซ‡ เชฌเชงเชพ เชฒเช—เชญเช— เชธเชฎเชพเชจ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡.

เชตเชพเชธเซเชคเชตเชฟเช•เชคเชพ เช›เซ‡:
เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹

เชคเชฎเชพเชฎ เชชเชพเช‚เชš เชชเซ‡เชขเซ€ เชชเชฆเซเชงเชคเชฟเช“เชฎเชพเช‚เชฅเซ€ เชชเซเชฒเซ‡เชจ เชชเชฐ เชธเชฟเช•เซเชตเชจเซเชธเชจเซเช‚ เชตเชฟเชเซเชฏเซเชฒเชพเช‡เชเซ‡เชถเชจ:
เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹

เช…เชจเซ‡ 3D เชฎเชพเช‚ เชตเชฟเชเซเชฏเซเชฒเชพเช‡เชเซ‡เชถเชจ. เชนเซเช‚ เชซเช•เซเชค System.Random.Next() เชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชœ เช›เซ‹เชกเซ€เชถ เชœเซ‡เชฅเซ€ เชธเชฎเชพเชจ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‹ เชธเชฎเซ‚เชน เช‰เชคเซเชชเชจเซเชจ เชจ เชฅเชพเชฏ.
เชฌเซเชฒเซ‡เชธเช†เชฐเชเชจเชœเซ€ เช…เชฅเชตเชพ เชตเชพเชœเชฌเซ€เชคเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชเชจเชœเซ€ เชคเชชเชพเชธเซ‹

UnityEngine เชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชคเชฐเชฃ เชตเชฟเชถเซ‡เชจเซ€ เชชเชฐเชฟเชšเชฏเชฎเชพเช‚ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เชตเชพเชฐเซเชคเชพ. เชฐเซ‡เชจเซเชกเชฎ เชชเซ‹เชคเชพเชจเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชคเซเช‚ เชจเชฅเซ€: เช•เชพเช‚ เชคเซ‹ เชคเซ‡ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชญเซ‚เชฒเชญเชฐเซ‡เชฒเซเช‚ เชนเชคเซเช‚, เช…เชฅเชตเชพ เชคเซเชฏเชพเชฐเชฅเซ€ เชเชจเซเชœเชฟเชจเชฎเชพเช‚ เช•เช‚เชˆเช• เชฌเชฆเชฒเชพเชฏเซเช‚ เช›เซ‡. เชชเชฐเช‚เชคเซ เชนเชตเซ‡ เช…เชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹