BlessRNG ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ RNG ืคึฟืึทืจ ื™ื•ื™ืฉืขืจ

BlessRNG ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ RNG ืคึฟืึทืจ ื™ื•ื™ืฉืขืจ

ืื™ืŸ ืฉืคึผื™ืœ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืื™ืจ ืึธืคื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ื™ื ื“ืŸ ืขืคึผืขืก ืžื™ื˜ ืจืึทื ื“ืึทืžื ืึทืก: Unity ื”ืื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืจืึทื ื“ืึธื ืคึฟืึทืจ ื“ืขื, ืื•ืŸ ืื™ืŸ ืคึผืึทืจืึทืœืขืœ ืขืก ืื™ื– System.Random. ืึทืžืึธืœ, ืื•ื™ืฃ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืคึผืจืึทื“ื–ืฉืขืงืก, ืื™ืš ื’ืึทื˜ ื“ืขื ืจื•ืฉื ืึทื– ื‘ื™ื™ื“ืข ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ืึทื ื“ืขืจืฉ (ื›ืึธื˜ืฉ ื–ื™ื™ ื–ืึธืœ ื”ืึธื‘ืŸ ืึท ื’ืœื™ื™ึทืš ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’).

ื“ืขืจื ืึธืš ื–ื™ื™ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื’ื™ื™ืŸ ืื™ืŸ ื“ืขื˜ืึทื™ืœืก - ืขืก ืื™ื– ื’ืขื ื•ื’ ืึทื– ื“ื™ ื™ื‘ืขืจื’ืึทื ื’ ืฆื• System.Random ืงืขืจืขืงื˜ืึทื“ ืึทืœืข ื“ื™ ืคืจืื‘ืœืขืžืขืŸ. ืื™ืฆื˜ ืžื™ืจ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืงื•ืงืŸ ืื™ืŸ ืขืก ืื™ืŸ ืžืขืจ ื“ืขื˜ืึทืœ ืื•ืŸ ื“ื•ืจื›ืคื™ืจืŸ ืึท ื‘ื™ืกืœ ืคืึธืจืฉื•ื ื’: ื•ื•ื™ "ื‘ื™ื™ืึทืกื˜" ืึธื“ืขืจ ืคึผืจื™ื“ื™ืงื˜ืึทื‘ืึทืœ RNGs ื–ืขื ืขืŸ, ืื•ืŸ ื•ื•ืึธืก ืฆื• ืงืœื™ื™ึทื‘ืŸ. ื“ืขืจืฆื•, ืื™ืš ื”ืึธื‘ืŸ ืžืขืจ ื•ื•ื™ ืึทืžืึธืœ ื’ืขื”ืขืจื˜ ืงืึทื ืคืœื™ืงื˜ื™ื ื’ ืžื™ื™ื ื•ื ื’ืขืŸ ื•ื•ืขื’ืŸ ื–ื™ื™ืขืจ "ืขืจืœืขื›ืงื™ื™ื˜" - ืœืึธืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืจืขื›ืขื ืขืŸ ืื•ื™ืก ื•ื•ื™ ื“ื™ ืคืึทืงื˜ื™ืฉ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคืึทืจื’ืœื™ื™ึทื›ืŸ ืžื™ื˜ ื“ื™ ื“ืขืจืงืœืขืจื˜ ืึธื ืขืก.

ืงื•ืจืฅ ื‘ื™ืœื“ื•ื ื’ืงืจื™ื™ื– ืคึผืจืึธื’ืจืึทื ืึธื“ืขืจ RNG ืื™ื– ืคืืงื˜ื™ืฉ RNG

ืื•ื™ื‘ ืื™ืจ ื–ืขื ื˜ ืฉื•ื™ืŸ ื‘ืึทืงืึทื ื˜ ืžื™ื˜ ื˜ืจืึทืค-ื ื•ืžืขืจ ื’ืขื ืขืจืึทื˜ืึธืจืก, ืื™ืจ ืงืขื ืขืŸ ืžื™ื“ ืฉืคึผืจื™ื ื’ืขืŸ ืฆื• ื“ื™ "ื˜ืขืกื˜ื™ื ื’" ืึธืคึผื˜ื™ื™ืœื•ื ื’.

ืจืึทื ื“ืึธื ื ื•ืžืขืจืŸ (RN) ื–ืขื ืขืŸ ืึท ืกื™ืงื•ื•ืึทื ืก ืคื•ืŸ ื ื•ืžืขืจืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื ื™ืฆืŸ ืขื˜ืœืขื›ืข ื˜ืจืึทืค (ื›ืึทืึธื˜ื™ืฉ) ืคึผืจืึธืฆืขืก, ืึท ืžืงื•ืจ ืคื•ืŸ ืขื ื˜ืจืึธืคึผื™. ื“ืึธืก ื”ื™ื™ืกื˜, ื“ืึธืก ืื™ื– ืึท ืกื™ืงื•ื•ืึทื ืก ื•ื•ืขืžืขื ืก ืขืœืขืžืขื ื˜ืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื™ื ื˜ืขืจืงืึทื ืขืงื˜ื™ื“ ื“ื•ืจืš ืงื™ื™ืŸ ืžืึทื˜ืึทืžืึทื˜ื™ืงืึทืœ ื’ืขื–ืขืฅ - ื–ื™ื™ ื”ืึธื‘ืŸ ืงื™ื™ืŸ ืกื™ื‘ื”-ืื•ืŸ-ื•ื•ื™ืจืงื•ื ื’ ืฉื™ื™ื›ื•ืช.

ื•ื•ืึธืก ืงืจื™ื™ื™ืฅ ื“ื™ ื˜ืจืึทืค - ื ื•ืžืขืจ ืื™ื– ื’ืขืจื•ืคืŸ ืึท ื˜ืจืึทืค - ื ื•ืžืขืจ ื’ืขื ืขืจืึทื˜ืึธืจ (ืจื ื’). ืขืก ื•ื•ืึธืœื˜ ื•ื™ืกืงื•ืžืขืŸ ืึทื– ืึทืœืฅ ืื™ื– ืขืœืขืžืขื ื˜ืึทืจ, ืึธื‘ืขืจ ืื•ื™ื‘ ืžื™ืจ ืžืึทืš ืคื•ืŸ ื˜ืขืึธืจื™ืข ืฆื• ืคื™ืจ, ืื™ืŸ ืคืึทืงื˜ ืขืก ืื™ื– ื ื™ืฉื˜ ืึทื–ื•ื™ ืคึผืฉื•ื˜ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืึท ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืึทืœื’ืขืจื™ื“ืึทื ืคึฟืึทืจ ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ืึทื–ืึท ืึท ืกื™ืงื•ื•ืึทื ืก.

ื“ื™ ืกื™ื‘ื” ืœื™ื’ื˜ ืื™ืŸ ื“ืขืจ ืึทื•ื•ืขืง ืคื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื›ืึทืึธืก ืื™ืŸ ืžืึธื“ืขืจืŸ ืงืึทื ืกื•ืžืขืจ ืขืœืขืงื˜ืจืึธื ื™ืง. ืึธืŸ ืขืก, ื˜ืจืึทืค - ื ื•ืžืขืจืŸ ื”ืึทืœื˜ืŸ ืฆื• ื–ื™ื™ืŸ ื˜ืจืึทืค, ืื•ืŸ ื–ื™ื™ืขืจ ื’ืขื ืขืจืึทื˜ืึธืจ ื˜ื•ืจื ืก ืื™ืŸ ืึท ืคึผืจืึธืกื˜ ืคึฟื•ื ืงืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ืึธืš ื“ื™ืคื™ื™ื ื“ ืึทืจื’ื•ืžืขื ื˜ืŸ. ืคึฟืึทืจ ืึท ื ื•ืžืขืจ ืคื•ืŸ ืกืคึผืขืฉืึทืœื˜ื™ื– ืื™ืŸ ื“ื™ ืขืก ืคืขืœื“, ื“ืึธืก ืื™ื– ืึท ืขืจื ืกื˜ ืคึผืจืึธื‘ืœืขื (ืœืžืฉืœ, ืงืจื™ืคึผื˜ืึธื’ืจืึทืคื™), ืึธื‘ืขืจ ืคึฟืึทืจ ืื ื“ืขืจืข ืขืก ืื™ื– ืึท ื’ืึธืจ ืคึผืึทืกื™ืง ืœื™ื™ื–ื•ื ื’.

ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืึทืŸ ืึทืœื’ืขืจื™ื“ืึทื ื•ื•ืึธืก ื•ื•ืึธืœื˜ ืฆื•ืจื™ืงืงื•ืžืขืŸ, ื›ืึธื˜ืฉ ื ื™ื˜ ื˜ืึทืงืข ื˜ืจืึทืค - ื ื•ืžืขืจืŸ, ืึธื‘ืขืจ ื•ื•ื™ ื ืึธืขื ื˜ ื•ื•ื™ ืžืขื’ืœืขืš ืฆื• ื–ื™ื™ - ื“ื™ ืึทื–ื•ื™ ื’ืขืจื•ืคืขื ืข ืคึผืกืขื•ื•ื“ืึธ-ืจืึทื ื“ืึธื ื ื•ืžืขืจืŸ (PRN). ื“ืขืจ ืึทืœื’ืขืจื™ื“ืึทื ืื™ืŸ ื“ืขื ืคืึทืœ ืื™ื– ื’ืขืจื•ืคืŸ ืึท ืคึผืกืขื•ื“ืึธืจืึทื ื“ืึธื ื ื•ืžืขืจ ื’ืขื ืขืจืึทื˜ืึธืจ (PRNG).

ืขืก ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ืงืจื™ื™ื™ื˜ื™ื ื’ ืึท PRNG, ืึธื‘ืขืจ ื“ื™ ืคืืœื’ืขื ื“ืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืคึฟืึทืจ ืึทืœืขืžืขืŸ:

  1. ื“ื™ ื ื•ื™ื˜ ืคึฟืึทืจ ืคึผืจื™ืœื™ืžืึทื ืขืจื™ ื™ื ื™ื˜ื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ.

    ื“ื™ PRNG ื”ืื˜ ืงื™ื™ืŸ ืžืงื•ืจ ืคื•ืŸ ืขื ื˜ืจืึธืคึผื™, ืึทื–ื•ื™ ืขืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ื’ืขื’ืขื‘ืŸ ืึทืŸ ืขืจืฉื˜ ืฉื˜ืึทื˜ ืื™ื™ื“ืขืจ ื ื•ืฆืŸ. ืขืก ืื™ื– ืกืคึผืขืกื™ืคื™ืขื“ ื•ื•ื™ ืึท ื ื•ืžืขืจ (ืึธื“ืขืจ ื•ื•ืขืงื˜ืึธืจ) ืื•ืŸ ืื™ื– ื’ืขืจื•ืคืŸ ืึท ื–ื•ื™ืžืขืŸ (ื˜ืจืึทื ื“ืึธื ื–ื•ื™ืžืขืŸ). ืึธืคื˜, ื“ืขืจ ืคึผืจืึทืกืขืกืขืจ ื–ื™ื™ื’ืขืจ ื˜ืึธืžื‘ืึทื ืง ืึธื“ืขืจ ื“ื™ ื ื•ืžืขืจื™ืงืึทืœ ืขืงื•ื•ื™ื•ื•ืึทืœืขื ื˜ ืคื•ืŸ ืกื™ืกื˜ืขื ืฆื™ื™ื˜ ืื™ื– ื’ืขื ื™ืฆื˜ ื•ื•ื™ ืึท ื–ื•ื™ืžืขืŸ.

  2. ืกื™ืงื•ื•ืึทื ืก ืจืขืคึผืจืึธื“ื•ืกื™ื‘ื™ืœื™ื˜ื™.

    ื“ื™ PRNG ืื™ื– ื’ืึธืจ ื“ื™ื˜ืขืจืžืึทื ื™ืกื˜ื™ืง, ืึทื–ื•ื™ ื“ื™ ื–ื•ื™ืžืขืŸ ืกืคึผืขืกื™ืคื™ืขื“ ื‘ืขืฉืึทืก ื™ื ื™ื˜ื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ ื™ื•ื ื™ืงืœื™ ื“ื™ื˜ืขืจืžืึทื ื– ื“ื™ ื’ืื ืฆืข ืฆื•ืงื•ื ืคึฟื˜ ืกื™ืงื•ื•ืึทื ืก ืคื•ืŸ ื ื•ืžืขืจืŸ. ื“ืขื ืžื™ื˜ืœ ืึทื– ืึท ื‘ืึทื–ื•ื ื“ืขืจ PRNG ื™ื ื™ื˜ื™ืึทืœื™ื–ืขื“ ืžื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื–ื•ื™ืžืขืŸ (ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืฆื™ื™ื˜, ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืžื’ื™ืœื”, ืื•ื™ืฃ ืคืึทืจืฉื™ื“ืขื ืข ื“ืขื•ื•ื™ืกืขืก) ื•ื•ืขื˜ ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื“ื™ ื–ืขืœื‘ืข ืกื™ืงื•ื•ืึทื ืก.

ืื™ืจ ืื•ื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ื™ืกืŸ ื“ื™ ืžืึทืฉืžืึธืขืก ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืงืขืจืึทืงื˜ืขืจื™ื™ื–ื™ื ื’ ื“ื™ PRNG - ื•ื•ืึธืก ื ื•ืžืขืจืŸ ืขืก ื•ื•ืขื˜ ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืื•ืŸ ืžื™ื˜ ื•ื•ืึธืก ืžืึทืฉืžืึธืขืก. ืจื•ื‘ึฟ ืึธืคื˜ ื“ืึธืก ืื™ื– ืึธื“ืขืจ ืึท ื ืึธืจืžืึทืœ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืึธื“ืขืจ ืึท ืžื•ื ื“ื™ืจ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’.
BlessRNG ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ RNG ืคึฟืึทืจ ื™ื•ื™ืฉืขืจ
ื ืึธืจืžืึทืœ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ (ืœื™ื ืงืก) ืื•ืŸ ืžื•ื ื“ื™ืจ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ (ืจืขื›ื˜)

ื–ืืœ ืก ื–ืึธื’ืŸ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืฉื™ื™ืŸ ืฉื˜ืึทืจื‘ืŸ ืžื™ื˜ 24 ื–ื™ื™ื˜ืŸ. ืื•ื™ื‘ ืื™ืจ ื•ื•ืึธืจืฃ ืขืก, ื“ื™ ืžืึทืฉืžืึธืขืก ืคื•ืŸ ื‘ืึทืงื•ืžืขืŸ ืึท ืื™ื™ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืœื™ื™ึทืš ืฆื• 1/24 (ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ื“ื™ ืžืึทืฉืžืึธืขืก ืฆื• ื‘ืึทืงื•ืžืขืŸ ืงื™ื™ืŸ ืื ื“ืขืจืข ื ื•ืžืขืจ). ืื•ื™ื‘ ืื™ืจ ืžืึทื›ืŸ ืคื™ืœืข ื•ื•ืืจืคื˜ ืขืจ ืื•ืŸ ืจืขืงืึธืจื“ื™ืจืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ, ืื™ืจ ื•ื•ืขื˜ ื‘ืึทืžืขืจืงืŸ ืึทื– ืึทืœืข ื“ื™ ืขื“ื–ืฉืึทื– ืคืึทืœืŸ ืื•ื™ืก ืžื™ื˜ ื‘ืขืขืจืขืš ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืึธืคื˜ืงื™ื™ึทื˜. ื™ืกืขื ืฉืึทืœื™, ื“ืขื ืฉื˜ืึทืจื‘ืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืจืขื›ื ื˜ ื•ื•ื™ ืึท RNG ืžื™ื˜ ืึท ืžื•ื ื“ื™ืจ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’.

ื•ื•ืึธืก ืื•ื™ื‘ ืื™ืจ ื•ื•ืึทืจืคืŸ 10 ืคื•ืŸ ื“ื™ ื‘ื™ื™ื ื“ืœืขืš ืื™ืŸ ืึทืžืึธืœ ืื•ืŸ ืฆื™ื™ืœืŸ ื“ื™ ื’ืึทื ืฅ ืคื•ื ืงื˜ืŸ? ื•ื•ืขื˜ ืžืขืŸ ื“ืขืจื•ื™ืฃ ืื•ื™ืคื”ื™ื˜ืŸ ื“ื™ ืื—ื™ื“ื•ืช? ื ื™ื™ืŸ. ืจื•ื‘ึฟ ืึธืคื˜, ื“ื™ ืกื•ืžืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ื ืึธืขื ื˜ ืฆื• 125 ืคื•ื ืงื˜ืŸ, ื“ืึธืก ืื™ื– ืึท ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ื•ื•ืขืจื˜. ืื•ืŸ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืืคื™ืœื• ืื™ื™ื“ืขืจ ืื™ืจ ืžืึทื›ืŸ ืึท ื•ื•ืึทืจืคืŸ, ืื™ืจ ืงืขื ืขืŸ ื‘ืขืขืจืขืš ืึธืคึผืฉืึทืฆืŸ ื“ื™ ืฆื•ืงื•ื ืคึฟื˜ ืจืขื–ื•ืœื˜ืึทื˜.

ื“ื™ ืกื™ื‘ื” ืื™ื– ืึทื– ืขืก ื–ืขื ืขืŸ ื“ื™ ื’ืจืขืกื˜ืข ื ื•ืžืขืจ ืคื•ืŸ ืงืึทืžื‘ืึทื ื™ื™ืฉืึทื ื– ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ื™ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ื›ืขื–ืฉื‘ืŸ. ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืคื•ืŸ ืขืก, ื“ื™ ื•ื•ื™ื™ื ื™ืงืขืจืข ืงืึทืžื‘ืึทื ื™ื™ืฉืึทื ื– - ืื•ืŸ, ืึทืงืึธืจื“ื™ื ื’ืœื™, ื“ื™ ื ื™ื“ืขืจื™ืงืขืจ ื“ื™ ืžืึทืฉืžืึธืขืก ืคื•ืŸ ืึท ืึธื ื•ื•ืขืจ. ืื•ื™ื‘ ื“ื™ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื•ื•ื™ื–ืฉื•ื•ืึทืœื™ื™ื–ื“, ืขืก ื•ื•ืขื˜ ื•ื•ื™ื–ืฉื•ื•ืึทืœื™ ืจื™ื–ืขืžื‘ืึทืœ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืึท ื’ืœืึธืง. ื“ืขืจื™ื‘ืขืจ, ืžื™ื˜ ืขื˜ืœืขื›ืข ืื•ื™ืกืฉื˜ืจืขืงืŸ, ืึท ืกื™ืกื˜ืขื ืคื•ืŸ 10 ื‘ื™ื™ื ื“ืœืขืš ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืจื•ืคึฟืŸ ืึท RNG ืžื™ื˜ ืึท ื ืึธืจืžืึทืœ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’.

ืืŸ ืื ื“ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื ืึธืจ ื“ืึธืก ืžืึธืœ ืื•ื™ืฃ ืึท ืคืœืึทืš - ืฉื™ืกืขืจื™ื™ึท ืื•ื™ืฃ ืึท ืฆื™ืœ. ื“ืขืจ ืฉื•ื˜ืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท RNG ื•ื•ืึธืก ื“ื–ืฉืขื ืขืจื™ื™ืฅ ืึท ืคึผืึธืจ ืคื•ืŸ ื ื•ืžืขืจืŸ (ืจืขื ื˜ื’ืขื , ื™) ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ื™ื–ืŸ ืื•ื™ืฃ ื“ื™ ื’ืจืึทืคื™ืง.
BlessRNG ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ RNG ืคึฟืึทืจ ื™ื•ื™ืฉืขืจ
ืฉื˜ื™ืžืขืŸ ืึทื– ื“ื™ ืึธืคึผืฆื™ืข ืื•ื™ืฃ ื“ื™ ืœื™ื ืงืก ืื™ื– ื ืขืขื ื˜ืขืจ ืฆื• ืคืึทืงื˜ื™ืฉ ืœืขื‘ืŸ - ื“ืึธืก ืื™ื– ืึท RNG ืžื™ื˜ ืึท ื ืึธืจืžืึทืœ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’. ืึธื‘ืขืจ ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฆืขื•ื•ืึธืจืคืŸ ืฉื˜ืขืจืŸ ืื™ืŸ ืึท ื˜ื•ื ืงืœ ื”ื™ืžืœ, ื“ื™ ืจืขื›ื˜ ืึธืคึผืฆื™ืข, ื‘ืืงื•ืžืขืŸ ืžื™ื˜ ืจื ื’ ืžื™ื˜ ืึท ืžื•ื ื“ื™ืจ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’, ืื™ื– ื‘ืขืกืขืจ ืคึผืึทืกื™ืง. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืงืœื™ื™ึทื‘ืŸ ืึท ื’ืขื ืขืจืึทื˜ืึธืจ ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืึทืจื‘ืขื˜ ืื™ืŸ ื”ืึทื ื˜.

ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ื™ ืขื ื˜ืจืึธืคึผื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ PNG ืกื™ืงื•ื•ืึทื ืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืขืก ืื™ื– ืึท ืกื™ืงื•ื•ืึทื ืก ื•ื•ืึธืก ืกื˜ืึทืจืฅ ื•ื•ื™ ื“ืึธืก:

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

ื•ื•ื™ ื˜ืจืึทืค ื–ืขื ืขืŸ ื“ื™ ื ื•ืžืขืจืŸ ื‘ื™ื™ึท ืขืจืฉื˜ืขืจ ื‘ืœื™ืง? ื–ืืœ ืก ืึธื ื”ื™ื™ื‘ืŸ ื“ื•ืจืš ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’.
BlessRNG ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ RNG ืคึฟืึทืจ ื™ื•ื™ืฉืขืจ
ืขืก ืงื•ืงื˜ ื ืึธืขื ื˜ ืฆื• ืžื•ื ื“ื™ืจ, ืึธื‘ืขืจ ืื•ื™ื‘ ืื™ืจ ืœื™ื™ืขื ืขืŸ ืึท ืกื™ืงื•ื•ืึทื ืก ืคื•ืŸ ืฆื•ื•ื™ื™ ื ื•ืžืขืจืŸ ืื•ืŸ ื˜ื™ื™ึทื˜ืฉืŸ ื–ื™ื™ ื•ื•ื™ ืงืึธื•ืึธืจื“ืึทื ืึทืฅ ืื•ื™ืฃ ืึท ืคืœืึทืš, ืื™ืจ ื‘ืึทืงื•ืžืขืŸ ื“ืขื:
BlessRNG ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ RNG ืคึฟืึทืจ ื™ื•ื™ืฉืขืจ
ืคึผืึทื˜ืขืจื ื– ื•ื•ืขืจืŸ ืงืœืืจ ืงืขื ื˜ื™ืง. ืื•ืŸ ื–ื™ื ื˜ ื“ื™ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ืกื™ืงื•ื•ืึทื ืก ื–ืขื ืขืŸ ืึธืจื“ืขืจื“ ืื™ืŸ ืึท ื–ื™ื›ืขืจ ื•ื•ืขื’ (ื“ืึธืก ืื™ื–, ืขืก ื”ืื˜ ืึท ื ื™ื“ืขืจื™ืง ืขื ื˜ืจืึธืคึผื™ืข), ื“ืึธืก ืงืขืŸ ืคื™ืจืŸ ืฆื• ื“ืขืจ ื–ื™ื™ืขืจ "ื‘ื™ื™ืึทืก". ืื™ืŸ ืึท ืžื™ื ื™ืžื•ื, ืึทื–ืึท ืึท 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, ืึทื–ืึท ืึท ืกื™ื˜ื•ืึทืฆื™ืข ืื™ื– ืงืึทื˜ืึทื’ืึทืจื™ืงืœื™ ืึทื ืึทืงืกืขืคึผื˜ืึทื‘ืึทืœ. ื“ืขืจื™ื‘ืขืจ, ืกืคึผืขืฆื™ืขืœ ืึทืœื’ืขืจื™ื“ืึทืžื– ื–ืขื ืขืŸ ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืฆื• ืึทืกืกืขืกืก ื–ื™ื™ืขืจ ืงื•ื•ืึทืœื™ื˜ืขื˜, ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ืึธื ืจื™ืจืŸ ืื™ืฆื˜. ื“ื™ ื˜ืขืžืข ืื™ื– ื‘ืจื™ื™ื˜ ืื•ืŸ ืคืืจื“ื™ื ื˜ ืึท ื‘ืึทื–ื•ื ื“ืขืจืŸ ืึทืจื˜ื™ืงืœ.

ื˜ืขืกื˜ื™ื ื’

ืื•ื™ื‘ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ืขืคึผืขืก ืคึฟืึทืจ ื–ื™ื›ืขืจ, ื•ื•ื™ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืื™ื? ืื™ื– ืขืก ื•ื•ืขืจื˜ ืึทืจื™ื‘ืขืจ ื“ื™ ื•ื•ืขื’ ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ื•ื•ืึธืก ืคืึทืจืงืขืจ ืœื™ื›ื˜ ืึทืœืึทื•ื– ืขืก? ื“ื™ ืงืึทื ืกืึทืงื•ื•ืขื ืกืึทื– ืงืขืŸ ื–ื™ื™ืŸ ืึทื ื“ืขืจืฉ.

ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื’ื™ื™ื˜ ืคึฟืึทืจ ื“ื™ ื ืึธื•ื˜ืึธืจื™ืึทืก ื˜ืจืึทืคื ืึทืก ืื™ืŸ Unity. ืขืก ืื™ื– ื’ื•ื˜ ืื•ื™ื‘ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืจื™ื•ื•ื™ืœื– ื“ื™ ื ื™ื™ื˜ื™ืง ื“ืขื˜ืึทื™ืœืก, ืึธื‘ืขืจ ื“ื™ ื’ืขืฉื™ื›ื˜ืข ื“ืขืจืžืื ื˜ ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ื– ื’ืขื•ื•ืขืŸ ืคึผื•ื ืงื˜ ื•ื•ื™ื™ึทืœ ืคื•ืŸ ื“ื™ ืคืขืœืŸ ืคื•ืŸ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืกืคึผืขืกื™ืคื™ืงืก.

ืื•ืŸ ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ื•ื•ื™ ื“ื™ ื’ืขืฆื™ื™ึทื’ ืึทืจื‘ืขื˜, ืื™ืจ ื•ื•ืขื˜ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• ื ื•ืฆืŸ ืขืก ืจื™ื›ื˜ื™ืง. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ื™ ืฆื™ื™ื˜ ืื™ื– ื’ืขืงื•ืžืขืŸ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืื•ืŸ ื“ื•ืจื›ืคื™ืจืŸ ืึทืŸ ืขืงืกืคึผืขืจื™ืžืขื ื˜ ืฆื• ืœืขืกืึธืฃ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ื•ื•ืขื’ืŸ ื“ื™ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’.

ื“ื™ ืœื™ื™ื–ื•ื ื’ ืื™ื– ืคึผืฉื•ื˜ ืื•ืŸ ืขืคืขืงื˜ื™ื•ื• - ืงืœื™ื™ึทื‘ืŸ ืกื˜ืึทื˜ื™ืกื˜ื™ืง, ื‘ืึทืงื•ืžืขืŸ ืึธื‘ื™ืขืงื˜ื™ื•ื• ื“ืึทื˜ืŸ ืื•ืŸ ืงื•ืง ืื™ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ.

ื˜ืขืžืข ืคื•ืŸ โ€‹โ€‹ืœืขืจื ืขืŸ

ืขืก ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ื•ื•ืขื’ืŸ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื˜ืจืึทืค - ื ื•ืžืขืจืŸ ืื™ืŸ Unity - ืžื™ืจ ื˜ืขืกื˜ืขื“ ืคื™ื ืฃ.

  1. ืกื™ืกื˜ืขื.ืจืึทื ื“ืึธื.ื ืขืกื˜(). ื“ื–ืฉืขื ืขืจื™ื™ืฅ ื™ื ื˜ืึทื“ื–ืฉืขืจื– ืื™ืŸ ืึท ื’ืขื’ืขื‘ืŸ ืงื™ื™ื˜ ืคื•ืŸ ื•ื•ืึทืœื•ืขืก.
  2. ืกื™ืกื˜ืขื.ืจืึทื ื“ืึธื.ื ืขืงืกื˜ื“ืึธื•ื‘ืœืข (). ื“ื–ืฉืขื ืขืจื™ื™ืฅ ื˜ืึธืคึผืœ ืคึผื™ื ื˜ืœืขื›ืงื™ื™ึทื˜ ื ื•ืžืขืจืŸ ืื™ืŸ ื“ื™ ืงื™ื™ื˜ ืคื•ืŸ [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() (ื•ื•ื• ืื™ืŸ ื“ื™ ื™ืงืขืจ ืื™ื– ื“ื™ ืงืกืึธืจืฉื™ืคื˜ ืึทืœื’ืขืจื™ื“ืึทื, ื•ื•ืึธืก ืžื™ื˜ืœ ืึทื– ื•ื•ื™ื“ืขืจ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ืึทืจื˜ืŸ ืคึฟืึทืจ ืึท ืžื•ื ื“ื™ืจ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’).

ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื“ื™ ื“ืขืจื•ื•ืึทืจื˜ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ื–ืขื ืขืŸ ื’ืขื ื•ืžืขืŸ ื•ื•ื™ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ืžืขื˜ืึทื“ืึทืœืึทื“ื–ืฉื™

ืžื™ืจ ื’ืขืฉืจื™ื‘ืŸ ืึท ืงืœื™ื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึทื– ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืกื™ืงื•ื•ืึทื ืกื™ื– ืคื•ืŸ ื˜ืจืึทืค - ื ื•ืžืขืจืŸ ื ื™ืฆืŸ ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ื“ืขืจืœืื ื’ื˜ ืžืขื˜ื”ืึธื“ืก ืื•ืŸ ื’ืขืจืื˜ืขื•ื•ืขื˜ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคึฟืึทืจ ื•ื•ื™ื™ึทื˜ืขืจ ืคึผืจืึทืกืขืกื™ื ื’.

ื“ื™ ืœืขื ื’ ืคื•ืŸ ื™ืขื“ืขืจ ืกื™ืงื•ื•ืึทื ืก ืื™ื– 100 ื ื•ืžืขืจืŸ.
ื“ื™ ืงื™ื™ื˜ ืคื•ืŸ ื˜ืจืึทืค - ื ื•ืžืขืจืŸ ืื™ื– [0, 100).

ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื’ืขื–ืืžืœื˜ ืคื•ืŸ ืขื˜ืœืขื›ืข ืฆื™ืœ ืคึผืœืึทื˜ืคืึธืจืžืก:

  • ืคึฟืขื ืฆื˜ืขืจ
    โ€” Unity v2018.3.14f1, ืขื“ื™ื˜ืึธืจ ืžืึธื“ืข, ืžืึธื ืึธ, .ื ืขื˜ ืกื˜ืึทื ื“ืึทืจื“ 2.0
  • ืžืึทืงืึธืก
    โ€” Unity v2018.3.14f1, ืขื“ื™ื˜ืึธืจ ืžืึธื“ืข, ืžืึธื ืึธ, .ื ืขื˜ ืกื˜ืึทื ื“ืึทืจื“ 2.0
    โ€” Unity v5.6.4p4, ืขื“ื™ื˜ืึธืจ ืžืึธื“ืข, ืžืึธื ืึธ, .ื ืขื˜ ืกื˜ืึทื ื“ืึทืจื“ 2.0
  • ืึทื ื“ืจื•ื™ื“
    - Unity v2018.3.14f1, ื‘ื•ื™ืขืŸ ืคึผืขืจ ืžื™ื˜ืœ, ืžืึธื ืึธ, .ื ืขื˜ ืกื˜ืึทื ื“ืึทืจื“ 2.0
  • ื™ืึธืก
    โ€” Unity v2018.3.14f1, ื‘ื•ื™ืขืŸ ืคึผืขืจ ืžื™ื˜ืœ, il2cpp, .NET Standard 2.0

ื™ืžืคึผืœืขืžืขื ื˜ืึทื˜ื™ืึธืŸ

ืžื™ืจ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ืคืึทืจืฉื™ื“ืขื ืข ื•ื•ืขื’ืŸ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื˜ืจืึทืค - ื ื•ืžืขืจืŸ. ืคึฟืึทืจ ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™, ืžื™ืจ ื•ื•ืขืœืŸ ืฉืจื™ื™ึทื‘ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืจืึทืคึผืขืจ ืงืœืึทืก, ื•ื•ืึธืก ื–ืึธืœ ืฆื•ืฉื˜ืขืœืŸ:

  1. ืžืขื’ืœืขื›ืงื™ื™ื˜ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืงื™ื™ื˜ ืคื•ืŸ ื•ื•ืึทืœื•ืขืก [ืžื™ืŸ / ืžืึทืงืก). ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืึทืฉื˜ื™ืžื˜ ื“ื•ืจืš ื“ื™ ืงืึธื ืกื˜ืจื•ืงื˜ืึธืจ.
  2. ืื•ืคึฟืŸ ืื•ืžื’ืขืงืขืจื˜ ืžืฃ. ื–ืืœ ืก ืงืœื™ื™ึทื‘ืŸ ืœืึธื–ื  ืฉื•ื•ื™ืžืขืŸ ื•ื•ื™ ื“ืขืจ ื˜ื™ืคึผ, ื•ื•ื™ ืขืก ืื™ื– ืžืขืจ ืึทืœื’ืขืžื™ื™ืŸ.
  3. ื“ืขืจ ื ืึธืžืขืŸ ืคื•ืŸ ื“ืขืจ ื“ื•ืจ ืื•ืคึฟืŸ ืคึฟืึทืจ ืžืึทืจืงื™ื ื’ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ. ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก, ืžื™ืจ ื•ื•ืขืœืŸ ืฆื•ืจื™ืงืงื•ืžืขืŸ ื•ื•ื™ ืึท ื•ื•ืขืจื˜ ื“ื™ ืคื•ืœ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ืงืœืึทืก + ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ืขื ืื•ืคึฟืŸ ื’ืขื ื™ืฆื˜ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ื“ื™ ืžืฃ.

ืขืจืฉื˜ืขืจ, ืœืึธื–ืŸ ืื•ื ื“ื– ื“ืขืจืงืœืขืจืŸ ืึทืŸ ืึทื‘ืกื˜ืจืึทืงืฆื™ืข ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืจืขืคึผืจื™ื–ืขื ื˜ื™ื“ ื“ื•ืจืš ื“ื™ 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.Random ืงืขืจื˜ ืึท ืคืœืึธื•ื˜ ื˜ื™ืคึผ ืคื•ืŸ ืึท ืคืึทืจืคืขืกื˜ื™ืงื˜ ืงื™ื™ื˜ ืคื•ืŸ ื•ื•ืึทืœื•ืขืก [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 ืงืœืึทืก ืงืขืจื˜ ืึท ืคืœืึธื•ื˜ื™ื ื’ ืคื•ื ื˜ ืคื•ืŸ ื˜ื™ืคึผ ืคืœืึธื•ื˜ ืื•ืŸ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึท ืงื™ื™ื˜ ืคื•ืŸ ื•ื•ืึทืœื•ืขืก. ื“ืขืจ ื‘ืœื•ื™ื– ื ื•ืึทื ืก ืื™ื– ืึทื– ื™ืขื“ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ 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 ื–ืขื ืขืŸ ื’ืจื™ื™ื˜. ื•ื•ื™ื™ึทื˜ืขืจ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืกื™ืงื•ื•ืึทื ืกื™ื– ืื•ืŸ ืจืึทื˜ืขื•ื•ืขืŸ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ื“ืึทื˜ืึทืกืขื˜ ืคึฟืึทืจ ืคึผืจืึทืกืขืกื™ื ื’. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ื•ื•ืขืœืŸ ืฉืึทืคึฟืŸ ืึท ืกืฆืขื ืข ืื•ืŸ ืึท ืงืœื™ื™ืŸ MainController ืฉืจื™ืคื˜ ืื™ืŸ Unity, ื•ื•ืึธืก ื•ื•ืขื˜ ื˜ืึธืŸ ืึทืœืข ื“ื™ ื ื™ื™ื˜ื™ืง ืึทืจื‘ืขื˜ ืื•ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ื–ื™ื™ืŸ ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ ื•ื™.

ืœืึธืžื™ืจ ืฉื˜ืขืœืŸ ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื“ื™ ื“ืึทื˜ืึทืกืขื˜ ืื•ืŸ ื“ื™ ืงื™ื™ื˜ ืคื•ืŸ 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)
            };
        }

        ...
    }
}

ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ืฉืึทืคึฟืŸ ืึท ื“ืึทื˜ืึทืกืขื˜. ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ืึทื˜ืŸ ื“ื–ืฉืขื ืขืจื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ ืจืขืงืึธืจื“ื™ื ื’ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืื™ืŸ ืึท ื˜ืขืงืกื˜ ื˜ื™ื™ึทืš (ืื™ืŸ ืงืกื•ื• ืคึฟืึธืจืžืึทื˜). ืฆื• ืงืจืึธื ื“ื™ ื•ื•ืึทืœื•ืขืก ืคื•ืŸ ื™ืขื“ืขืจ IRandomGenerator, ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื‘ืึทื–ื•ื ื“ืขืจ ื–ื™ื™ึทืœ ืื™ื– ืึทืœืึทืงื™ื™ื˜ื™ื“, ืื•ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืฉื•ืจื” ื›ึผื•ืœืœ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ื’ืขื ืขืจืึทื˜ืึธืจ.

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

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

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

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

        ...
    }
}

ืึทืœืข ื•ื•ืึธืก ื‘ืœื™ื™ื‘ื˜ ืื™ื– ืฆื• ืจื•ืคืŸ ื“ื™ GenerateCsvDataSet ืื•ืคึฟืŸ ืื•ืŸ ืจืึทื˜ืขื•ื•ืขืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืฆื• ืึท ื˜ืขืงืข, ืึธื“ืขืจ ื’ืœื™ื™ืš ืึทืจื™ื‘ืขืจืคื™ืจืŸ ื“ื™ ื“ืึทื˜ืŸ ืื™ื‘ืขืจ ื“ื™ ื ืขืฅ ืคื•ืŸ ื“ื™ ืกื•ืฃ ืžื™ื˜ืœ ืฆื• ื“ื™ ืจื™ืกื™ื•ื•ื™ื ื’ ืกืขืจื•ื•ืขืจ.

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


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

        ...
    }
}

ื“ื™ ืžืงื•ืจ ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื–ืขื ืขืŸ ืื™ืŸ ื’ื™ื˜ืœืึทื‘.

ืจืขื–ื•ืœื˜ืึทื˜ืŸ

ืงื™ื™ืŸ ื ืก ืื™ื– ื ื™ืฉื˜ ื’ืขืฉืขืŸ. ื•ื•ืึธืก ื–ื™ื™ ื”ืึธื‘ืŸ ื“ืขืจื•ื•ืึทืจื˜ ืื™ื– ื•ื•ืึธืก ื–ื™ื™ ื‘ืึทืงื•ืžืขืŸ - ืื™ืŸ ืึทืœืข ืงืึทืกืขืก, ืึท ื’ืœื™ื™ึทืš ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืึธืŸ ืึท ืึธื ืฆื•ื”ืขืจืขื ื™ืฉ ืคื•ืŸ ืงืึทื ืกืคึผื™ืจืึทืกื™ื–. ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื–ืขืŸ ื“ื™ ืคื•ื ื˜ ืื™ืŸ ืฉื˜ืขืœืŸ ื‘ืึทื–ื•ื ื“ืขืจ ื’ืจืึทืคืก ืคึฟืึทืจ ืคึผืœืึทื˜ืคืึธืจืžืก - ื–ื™ื™ ืึทืœืข ื•ื•ื™ื™ึทื–ืŸ ื‘ืขืขืจืขืš ื“ื™ ื–ืขืœื‘ืข ืจืขื–ื•ืœื˜ืึทื˜ืŸ.

ื“ืขืจ ืžืฆื™ืื•ืช ืื™ื–:
BlessRNG ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ RNG ืคึฟืึทืจ ื™ื•ื™ืฉืขืจ

ื•ื•ื™ืกื•ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ืคื•ืŸ ืกื™ืงื•ื•ืึทื ืกื™ื– ืื•ื™ืฃ ืึท ืคืœืึทืš ืคื•ืŸ ืึทืœืข ืคื™ื ืฃ ื“ื•ืจ ืžืขื˜ื”ืึธื“ืก:
BlessRNG ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ RNG ืคึฟืึทืจ ื™ื•ื™ืฉืขืจ

ืื•ืŸ ื•ื•ื™ื–ืฉื•ื•ืึทืœืึทื–ื™ื™ืฉืึทืŸ ืื™ืŸ 3 ื“. ืื™ืš ืœืึธื–ืŸ ื‘ืœื•ื™ื– ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ System.Random.Next() ืึทื–ื•ื™ ื ื™ืฉื˜ ืฆื• ืคึผืจืึธื“ื•ืฆื™ืจืŸ ืึท ื‘ื™ื ื˜ืœ ืคื•ืŸ ื™ื™ื“ืขื ื™ืงืึทืœ ืื™ื ื”ืึทืœื˜.
BlessRNG ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ RNG ืคึฟืึทืจ ื™ื•ื™ืฉืขืจ

ื“ื™ ื’ืขืฉื™ื›ื˜ืข ื“ืขืจืฆื™ื™ืœื˜ ืื™ืŸ ื“ื™ ื”ืงื“ืžื” ื•ื•ืขื’ืŸ ื“ืขืจ ื ืึธืจืžืึทืœ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืคื•ืŸ UnityEngine.Random ื”ืื˜ ื ื™ืฉื˜ ืื™ื‘ืขืจื—ื–ืจืŸ ื–ื™ืš: ืึธื“ืขืจ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื˜ื›ื™ืœืขืก ืขืจืึธื•ื ื™ืึทืก, ืึธื“ืขืจ ืขืคึผืขืก ื”ืื˜ ื–ื™ื ื˜ ื’ืขื‘ื™ื˜ืŸ ืื™ืŸ ื“ื™ ืžืึธื˜ืึธืจ. ืื‘ืขืจ ืื™ืฆื˜ ืžื™ืจ ื–ืขื ืขืŸ ื–ื™ื›ืขืจ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’