BlessRNG แžฌแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› RNG แžŠแžพแž˜แŸ’แž”แžธแž™แžปแžแŸ’แžแžทแž’แž˜แŸŒ

BlessRNG แžฌแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› RNG แžŠแžพแž˜แŸ’แž”แžธแž™แžปแžแŸ’แžแžทแž’แž˜แŸŒ

แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸแž แŸ’แž‚แŸแž˜ แž‡แžถแžšแžฟแž™แŸ—แžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแž—แŸ’แž‡แžถแž”แŸ‹แžขแŸ’แžœแžธแž˜แžฝแž™แž‡แžถแž˜แžฝแž™แž“แžนแž„แž—แžถแž–แž…แŸƒแžŠแž“แŸ’แž™แŸ– Unity แž˜แžถแž“ Random แž•แŸ’แž‘แžถแž›แŸ‹แžแŸ’แž›แžฝแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžšแžฟแž„แž“แŸแŸ‡ แž แžพแž™แžŸแŸ’แžšแž”แž‚แŸ’แž“แžถแž‡แžถแž˜แžฝแž™แž“แžนแž„แžœแžถแž˜แžถแž“ System.Random แŸ” แž“แŸ…แž–แŸแž›แž˜แžฝแž™ แž“แŸ…แž›แžพแž‚แž˜แŸ’แžšแŸ„แž„แž˜แžฝแž™ แžแŸ’แž‰แžปแŸ†แž‘แž‘แžฝแž›แž”แžถแž“แž…แŸ†แžŽแžถแž”แŸ‹แžขแžถแžšแž˜แŸ’แž˜แžŽแŸแžแžถ แž‘แžถแŸ†แž„แž–แžธแžšแžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžแžปแžŸแž‚แŸ’แž“แžถ (แž‘แŸ„แŸ‡แž”แžธแž‡แžถแž–แžฝแž€แž‚แŸแž‚แžฝแžšแžแŸ‚แž˜แžถแž“แž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แžŠแžผแž…แž‚แŸ’แž“แžถแž€แŸแžŠแŸ„แž™)แŸ”

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แž–แžฝแž€แž‚แŸแž˜แžทแž“แž”แžถแž“แž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž‘แŸ - แžœแžถแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแžถแž“แŸ‹แž แžพแž™แžŠแŸ‚แž›แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž‘แŸ… System.Random แž”แžถแž“แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž‘แžถแŸ†แž„แžขแžŸแŸ‹แŸ” แžฅแžกแžผแžœแž“แŸแŸ‡ แž™แžพแž„แž”แžถแž“แžŸแž˜แŸ’แžšแŸแž…แž…แžทแžแŸ’แžแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แžœแžถแžฑแŸ’แž™แž€แžถแž“แŸ‹แžแŸ‚แž›แž˜แŸ’แžขแžทแž แž“แžทแž„แž’แŸ’แžœแžพแž€แžถแžšแžŸแŸ’แžšแžถแžœแž‡แŸ’แžšแžถแžœแž”แž“แŸ’แžแžทแž…แž”แž“แŸ’แžแžฝแž…แŸ– แžแžพ RNGs "แž›แŸ†แžขแŸ€แž„" แžฌแžขแžถแž…แž–แŸ’แž™แžถแž€แžšแžŽแŸแž”แžถแž“ แž“แžทแž„แž˜แžฝแž™แžŽแžถแžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž‡แŸ’แžšแžพแžŸแžšแžพแžŸแŸ” แž‡แžถแž„แž“แŸแŸ‡แž‘แŸ…แž‘แŸ€แž แžแŸ’แž‰แžปแŸ†แž”แžถแž“แžฎแž…แŸ’แžšแžพแž“แž‡แžถแž„แž˜แŸ’แžแž„แž“แžผแžœแž˜แžแžทแž•แŸ’แž‘แžปแž™แž‚แŸ’แž“แžถแžขแŸ†แž–แžธ "แž—แžถแž–แžŸแŸ’แž˜แŸ„แŸ‡แžแŸ’แžšแž„แŸ‹" แžšแž”แžŸแŸ‹แž–แžฝแž€แž‚แŸ - แž…แžผแžšแž™แžพแž„แž–แŸ’แž™แžถแž™แžถแž˜แžŸแŸ’แžœแŸ‚แž„แž™แž›แŸ‹แž–แžธแžšแž”แŸ€แž”แžŠแŸ‚แž›แž›แž‘แŸ’แž’แž•แž›แž–แžทแžแž”แŸ’แžšแŸ€แž”แž’แŸ€แž”แž‡แžถแž˜แžฝแž™แž“แžนแž„แžขแŸ’แž“แž€แžŠแŸ‚แž›แž”แžถแž“แž”แŸ’แžšแž€แžถแžŸแŸ”

แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžขแž”แŸ‹แžšแŸ†แžแŸ’แž›แžธแŸ— แžฌ RNG แž‚แžบแž–แžทแžแž‡แžถ RNG

แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž’แŸ’แž›แžถแž”แŸ‹แžŸแŸ’แž‚แžถแž›แŸ‹แžงแž”แž€แžšแžŽแŸแž”แž„แŸ’แž€แžพแžแž›แŸแžแž…แŸƒแžŠแž“แŸ’แž™แžšแžฝแž…แž แžพแž™ แžขแŸ’แž“แž€แžขแžถแž…แžšแŸ†แž›แž„แž‘แŸ…แž•แŸ’แž“แŸ‚แž€ "แž€แžถแžšแžŸแžถแž€แž›แŸ’แž”แž„" แž—แŸ’แž›แžถแž˜แŸ—แŸ”

แž›แŸแžแž…แŸƒแžŠแž“แŸ’แž™ (RN) แž‚แžบแž‡แžถแž›แŸ†แžŠแžถแž”แŸ‹แž“แŸƒแž›แŸแžแžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แž€แžพแžแžŠแŸ„แž™แž”แŸ’แžšแžพแžŠแŸ†แžŽแžพแžšแž€แžถแžšแž…แŸƒแžŠแž“แŸ’แž™ (แžœแžนแž€แžœแžš) แžŠแŸ‚แž›แž‡แžถแž”แŸ’แžšแž—แž–แž“แŸƒ entropy แŸ” แž“แŸ„แŸ‡แž‚แžบแž“แŸแŸ‡แž‚แžบแž‡แžถแž›แŸ†แžŠแžถแž”แŸ‹แžŠแŸ‚แž›แž’แžถแžแžปแžšแž”แžŸแŸ‹แž–แžฝแž€แž‚แŸแž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แž‘แžถแž€แŸ‹แž‘แž„แž‚แŸ’แž“แžถแžŠแŸ„แž™แž…แŸ’แž”แžถแž”แŸ‹แž‚แžŽแžทแžแžœแžทแž‘แŸ’แž™แžถแžŽแžถแž˜แžฝแž™แžกแžพแž™ - แž–แžฝแž€แž‚แŸแž˜แžทแž“แž˜แžถแž“แž‘แŸ†แž“แžถแž€แŸ‹แž‘แŸ†แž“แž„แž˜แžผแž›แž แŸแžแžปแž“แžทแž„แžฅแž‘แŸ’แž’แžทแž–แž›แž‘แŸแŸ”

แžขแŸ’แžœแžธแžŠแŸ‚แž›แž”แž„แŸ’แž€แžพแžแž›แŸแžแž…แŸƒแžŠแž“แŸ’แž™แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแž แŸ…แžแžถ random number generator (RNG)แŸ” แžœแžถแž แžถแž€แŸ‹แžŠแžผแž…แž‡แžถแžแžถแžขแŸ’แžœแžธแž‚แŸ’แžšแž”แŸ‹แž™แŸ‰แžถแž„แž‚แžบแž”แž‹แž˜ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž”แŸ’แžšแžŸแžทแž“แž”แžพแž™แžพแž„แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž–แžธแž‘แŸ’แžšแžนแžŸแŸ’แžŠแžธแž‘แŸ…แž€แžถแžšแžขแž“แžปแžœแžแŸ’แž แž“แŸ„แŸ‡แžแžถแž˜แž–แžทแžแžœแžถแž˜แžทแž“แžŸแžถแž˜แž‰แŸ’แž‰แž‘แŸแž€แŸ’แž“แžปแž„แž€แžถแžšแžขแž“แžปแžœแžแŸ’แž algorithm แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž€แžพแžแž›แŸ†แžŠแžถแž”แŸ‹แž”แŸ‚แž”แž“แŸแŸ‡แŸ”

แž แŸแžแžปแž•แž›แž‚แžบแžขแžœแžแŸ’แžแž˜แžถแž“แž“แŸƒแž—แžถแž–แžœแžนแž€แžœแžšแžŠแžผแž…แž‚แŸ’แž“แžถแž“แŸ…แž€แŸ’แž“แžปแž„แž‚แŸ’แžšแžฟแž„แžขแŸแžกแžทแž…แžแŸ’แžšแžผแž“แžทแž€แž‘แŸ†แž“แžพแž”แŸ” แž”แžพแž‚แŸ’แž˜แžถแž“แžœแžถแž‘แŸ แž›แŸแžแž…แŸƒแžŠแž“แŸ’แž™แžˆแž”แŸ‹แž‡แžถแž…แŸƒแžŠแž“แŸ’แž™ แž แžพแž™แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž—แŸ’แž›แžพแž„แžšแž”แžŸแŸ‹แžœแžถแž”แŸ’แžšแŸ‚แž‘แŸ…แž‡แžถแž˜แžปแžแž„แžถแžšแž’แž˜แŸ’แž˜แžแžถแž“แŸƒแžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แžŠแŸ‚แž›แž”แžถแž“แž€แŸ†แžŽแžแŸ‹แž™แŸ‰แžถแž„แž…แŸ’แž”แžถแžŸแŸ‹แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‡แŸ†แž“แžถแž‰แžฏแž€แž‘แŸแžŸแž˜แžฝแž™แž…แŸ†แž“แžฝแž“แž€แŸ’แž“แžปแž„แžœแžทแžŸแŸแž™ IT แž“แŸแŸ‡แž‚แžบแž‡แžถแž”แž‰แŸ’แž แžถแž’แŸ’แž„แž“แŸ‹แž’แŸ’แž„แžš (แžงแž‘แžถแž แžšแžŽแŸ แž‚แŸ’แžšแžธแž”แž‚แŸ’แžšแžธแž”) แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแž˜แžถแž“แžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžŠแŸ‚แž›แžขแžถแž…แž‘แž‘แžฝแž›แž™แž€แž”แžถแž“แž‘แžถแŸ†แž„แžŸแŸ’แžšแžปแž„แŸ”

แžœแžถแž…แžถแŸ†แž”แžถแž…แŸ‹แž€แŸ’แž“แžปแž„แž€แžถแžšแžŸแžšแžŸแŸแžšแž€แŸ’แž”แžฝแž“แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžŠแŸ‚แž›แž“แžนแž„แžแŸ’แžšแž›แž”แŸ‹แž˜แž€แžœแžทแž‰ แž‘แŸ„แŸ‡แž”แžธแž‡แžถแž˜แžทแž“แž˜แŸ‚แž“แž‡แžถแž›แŸแžแž…แŸƒแžŠแž“แŸ’แž™แž€แŸแžŠแŸ„แž™ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžฑแŸ’แž™แž‡แžทแžแž”แŸ†แž•แžปแžแžแžถแž˜แžŠแŸ‚แž›แžขแžถแž…แž’แŸ’แžœแžพแž‘แŸ…แž”แžถแž“ - แžŠแŸ‚แž›แž‚แŸแž แŸ…แžแžถแž›แŸแžแž…แŸƒแžŠแž“แŸ’แž™ (PRN) แŸ” แž€แŸ’แž”แžฝแž“แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแž แŸ…แžแžถ pseudorandom number generator (PRNG) แŸ”

แž˜แžถแž“แž‡แž˜แŸ’แžšแžพแžŸแž‡แžถแž…แŸ’แžšแžพแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž€แžพแž PRNG แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžแžถแž„แž€แŸ’แžšแŸ„แž˜แž“แŸแŸ‡แž“แžนแž„แž–แžถแž€แŸ‹แž–แŸแž“แŸ’แž’แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แžšแžถแž›แŸ‹แž‚แŸ’แž“แžถแŸ–

  1. แžแž˜แŸ’แžšแžผแžœแž€แžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž”แž‹แž˜แŸ”

    PRNG แž˜แžทแž“แž˜แžถแž“แž”แŸ’แžšแž—แž–แž“แŸƒ entropy แž‘แŸ แžŠแžผแž…แŸ’แž“แŸแŸ‡แžœแžถแžแŸ’แžšแžผแžœแžแŸ‚แž•แŸ’แžแž›แŸ‹แžŸแŸ’แžแžถแž“แž—แžถแž–แžŠแŸ†แž”แžผแž„แž˜แžปแž“แž–แŸแž›แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แŸ” แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž‡แžถแž›แŸแž (แžฌแžœแŸ‰แžทแž…แž‘แŸแžš) แž แžพแž™แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแž แŸ…แžแžถแž‚แŸ’แžšแžถแž”แŸ‹แž–แžผแž‡ (แž‚แŸ’แžšแžถแž”แŸ‹แž–แžผแž‡แž…แŸƒแžŠแž“แŸ’แž™) แŸ” แž‡แžถแž‰แžนแž€แž‰แžถแž”แŸ‹ แžงแž”แž€แžšแžŽแŸแžšแžถแž”แŸ‹แž“แžถแžกแžทแž€แžถแžŠแŸ†แžŽแžพแžšแž€แžถแžš แžฌแžŸแž˜แž˜แžผแž›แž‡แžถแž›แŸแžแž“แŸƒแž˜แŸ‰แŸ„แž„แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแž‡แžถแž‚แŸ’แžšแžถแž”แŸ‹แž–แžผแž‡แŸ”

  2. แž€แžถแžšแž”แž“แŸ’แžแž–แžผแž‡แžแžถแž˜แž›แŸ†แžŠแžถแž”แŸ‹แŸ”

    PRNG แžแŸ’แžšแžผแžœแž”แžถแž“แž€แŸ†แžŽแžแŸ‹แž‘แžถแŸ†แž„แžŸแŸ’แžšแžปแž„ แžŠแžผแž…แŸ’แž“แŸแŸ‡แž‚แŸ’แžšแžถแž”แŸ‹แž–แžผแž‡แžŠแŸ‚แž›แž”แžถแž“แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž€แŸ’แž“แžปแž„แžขแŸ†แžกแžปแž„แž–แŸแž›แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžŠแŸ†แž”แžผแž„แž€แŸ†แžŽแžแŸ‹แžŠแŸ„แž™แžกแŸ‚แž€แž–แžธแž›แŸ†แžŠแžถแž”แŸ‹แž“แŸƒแž›แŸแžแž“แžถแž–แŸแž›แžขแž“แžถแž‚แžแž‘แžถแŸ†แž„แž˜แžผแž›แŸ” แž“แŸแŸ‡แž˜แžถแž“แž“แŸแž™แžแžถ PRNG แžŠแžถแž…แŸ‹แžŠแŸ„แž™แžกแŸ‚แž€แžŠแŸ‚แž›แž”แžถแž“แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž‡แžถแž˜แžฝแž™แž‚แŸ’แžšแžถแž”แŸ‹แž–แžผแž‡แžŠแžผแž…แž‚แŸ’แž“แžถ (แž“แŸ…แž–แŸแž›แž•แŸ’แžŸแŸแž„แž‚แŸ’แž“แžถ แž€แŸ’แž“แžปแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž•แŸ’แžŸแŸแž„แž‚แŸ’แž“แžถ แž“แŸ…แž›แžพแžงแž”แž€แžšแžŽแŸแž•แŸ’แžŸแŸแž„แž‚แŸ’แž“แžถ) แž“แžนแž„แž”แž„แŸ’แž€แžพแžแž›แŸ†แžŠแžถแž”แŸ‹แžŠแžผแž…แž‚แŸ’แž“แžถแŸ”

แžขแŸ’แž“แž€แž€แŸแžแŸ’แžšแžผแžœแžŠแžนแž„แž–แžธแž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แž”แŸ’แžšแžผแž”แžถแž”แŸŠแžธแž›แžธแžแŸแžŠแŸ‚แž›แž€แŸ†แžŽแžแŸ‹แž›แž€แŸ’แžแžŽแŸˆ PRNG - แžแžพแž›แŸแžแžขแŸ’แžœแžธแžŠแŸ‚แž›แžœแžถแž“แžนแž„แž”แž„แŸ’แž€แžพแž แž“แžทแž„แž‡แžถแž˜แžฝแž™แž“แžนแž„แž”แŸ’แžšแžผแž”แžถแž”แŸŠแžธแž›แžธแžแŸแžขแŸ’แžœแžธแŸ” แž—แžถแž‚แž…แŸ’แžšแžพแž“แž‡แžถแž‰แžนแž€แž‰แžถแž”แŸ‹แž“แŸแŸ‡แž‚แžบแž‡แžถแž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แž’แž˜แŸ’แž˜แžแžถ แžฌแž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แžฏแž€แžŸแžŽแŸ’แž‹แžถแž“แŸ”
BlessRNG แžฌแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› RNG แžŠแžพแž˜แŸ’แž”แžธแž™แžปแžแŸ’แžแžทแž’แž˜แŸŒ
แž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แž’แž˜แŸ’แž˜แžแžถ (แž†แŸ’แžœแŸแž„) แž“แžทแž„แž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แžฏแž€แžŸแžŽแŸ’แž‹แžถแž“ (แžŸแŸ’แžแžถแŸ†)

แžงแž”แž˜แžถแžแžถแž™แžพแž„แž˜แžถแž“แž€แžถแžšแžŸแŸ’แž›แžถแž”แŸ‹แžŠแŸ„แž™แž™แžปแžแŸ’แžแžทแž’แž˜แŸŒแžŠแŸ‚แž›แž˜แžถแž“ 24 แž‡แŸ’แžšแžปแž„แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž”แŸ„แŸ‡แžœแžถ แž”แŸ’แžšแžผแž”แžถแž”แŸŠแžธแž›แžธแžแŸแž“แŸƒแž€แžถแžšแž‘แž‘แžฝแž›แž”แžถแž“แž›แŸแžแž˜แžฝแž™แž“แžนแž„แžŸแŸ’แž˜แžพแž“แžนแž„ 1/24 (แžŠแžผแž…แž‚แŸ’แž“แžถแž“แžนแž„แž”แŸ’แžšแžผแž”แžถแž”แŸŠแžธแž›แžธแžแŸแž“แŸƒแž€แžถแžšแž‘แž‘แžฝแž›แž”แžถแž“แž›แŸแžแž•แŸ’แžŸแŸแž„แž‘แŸ€แž)แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž’แŸ’แžœแžพแž€แžถแžšแž”แŸ„แŸ‡แž…แŸ’แžšแžพแž“ แž“แžทแž„แž€แžแŸ‹แžแŸ’แžšแžถแž›แž‘แŸ’แž’แž•แž› แžขแŸ’แž“แž€แž“แžนแž„แžŸแž˜แŸ’แž‚แžถแž›แŸ‹แžƒแžพแž‰แžแžถแž‚แŸ‚แž˜แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž’แŸ’แž›แžถแž€แŸ‹แž…แŸแž‰แž‡แžถแž˜แžฝแž™แž“แžนแž„แž”แŸ’แžšแŸแž€แž„แŸ‹แž”แŸ’แžšแž แžถแž€แŸ‹แž”แŸ’แžšแž แŸ‚แž›แž‚แŸ’แž“แžถแŸ” แžŸแŸ†แžแžถแž“แŸ‹ แž€แžถแžšแžŸแŸ’แž›แžถแž”แŸ‹แž“แŸแŸ‡แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž…แžถแžแŸ‹แž‘แžปแž€แžแžถแž‡แžถ RNG แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แžฏแž€แžŸแžŽแŸ’แž‹แžถแž“แŸ”

แž…แžปแŸ‡แž”แžพแžขแŸ’แž“แž€แž”แŸ„แŸ‡แž‚แŸ’แžšแžถแž”แŸ‹แžกแžปแž€แžกแžถแž€แŸ‹แž‘แžถแŸ†แž„ 10 แž‚แŸ’แžšแžถแž”แŸ‹แž€แŸ’แž“แžปแž„แž–แŸแž›แžแŸ‚แž˜แžฝแž™ แž แžพแž™แžšแžถแž”แŸ‹แž–แžทแž“แŸ’แž‘แžปแžŸแžšแžปแž”? แžแžพแžฏแž€แžŸแžŽแŸ’แž‹แžถแž“แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แžšแž€แŸ’แžŸแžถแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžœแžถแž‘แŸ? แž‘แŸ แž—แžถแž‚แž…แŸ’แžšแžพแž“แž‡แžถแž‰แžนแž€แž‰แžถแž”แŸ‹ แž…แŸ†แž“แžฝแž“แž‘แžนแž€แž”แŸ’แžšแžถแž€แŸ‹แž“แžนแž„แž“แŸ…แž‡แžทแž 125 แž–แžทแž“แŸ’แž‘แžป แž–แŸ„แž›แž‚แžบแžŠแž›แŸ‹แžแž˜แŸ’แž›แŸƒแž˜แž’แŸ’แž™แž˜แž˜แžฝแž™แž…แŸ†แž“แžฝแž“แŸ” แž แžพแž™แž‡แžถแž›แž‘แŸ’แž’แž•แž› แžŸแžผแž˜แŸ’แž”แžธแžแŸ‚แž˜แžปแž“แž–แŸแž›แž”แŸ„แŸ‡แž…แŸ„แž› แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ‰แžถแž“แŸ‹แž”แŸ’แžšแž˜แžถแžŽแž›แž‘แŸ’แž’แž•แž›แž“แžถแž–แŸแž›แžขแž“แžถแž‚แž

แž แŸแžแžปแž•แž›แž‚แžบแžแžถแž˜แžถแž“แž…แŸ†แž“แžฝแž“แž…แŸ’แžšแžพแž“แž”แŸ†แž•แžปแžแž“แŸƒแž”แž“แŸ’แžŸแŸ†แžŠแžพแž˜แŸ’แž”แžธแž‘แž‘แžฝแž›แž”แžถแž“แž–แžทแž“แŸ’แž‘แžปแž˜แž’แŸ’แž™แž˜แŸ” แž€แžถแž“แŸ‹แžแŸ‚แž†แŸ’แž„แžถแž™แž–แžธแžœแžถ แž”แž“แŸ’แžŸแŸ†แžแžทแž… - แž แžพแž™แžแžถแž˜แž“แŸ„แŸ‡ แž”แŸ’แžšแžผแž”แžถแž”แŸŠแžธแž›แžธแžแŸแž“แŸƒแž€แžถแžšแž”แžถแžแŸ‹แž”แž„แŸ‹แž€แžถแž“แŸ‹แžแŸ‚แž‘แžถแž”แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแž‘แžทแž“แŸ’แž“แž“แŸแž™แž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแž˜แžพแž›แžƒแžพแž‰ แžœแžถแž“แžนแž„แž”แŸ’แžšแž แžถแž€แŸ‹แž”แŸ’แžšแž แŸ‚แž›แž“แžนแž„แžšแžผแž”แžšแžถแž„แžšแž”แžŸแŸ‹แž€แžŽแŸ’แžแžนแž„แŸ” แžŠแžผแž…แŸ’แž“แŸแŸ‡แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž›แžถแžแžŸแž“แŸ’แž’แžนแž„แžแŸ’แž›แŸ‡ แž”แŸ’แžšแž–แŸแž“แŸ’แž’แž“แŸƒแž‚แŸ’แžšแžถแž”แŸ‹แžกแžปแž€แžกแžถแž€แŸ‹แž…แŸ†แž“แžฝแž“ 10 แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแž แŸ…แžแžถ RNG แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แž’แž˜แŸ’แž˜แžแžถแŸ”

แžงแž‘แžถแž แžšแžŽแŸแž˜แžฝแž™แž‘แŸ€แžแž˜แžถแž“แžแŸ‚แž›แžพแž€แž“แŸแŸ‡แž‘แŸแž“แŸ…แž›แžพแž™แž“แŸ’แžแž แŸ„แŸ‡ - แž”แžถแž‰แŸ‹แž…แŸ†แž‚แŸ„แž›แžŠแŸ…แŸ” แžขแŸ’แž“แž€แž”แžถแž‰แŸ‹แž“แžนแž„แž€แŸ’แž›แžถแž™แž‡แžถ 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 แŸกแŸจ, แŸฅแŸจ, แŸงแŸฉ, แŸฆแŸฅ, แŸคแŸฅ, แŸฉแŸฉ, แŸฉแŸ , แŸจแŸข, แŸขแŸ , แŸคแŸก, แŸกแŸฃ, แŸจแŸจ, แŸงแŸฆ, แŸจแŸข, แŸขแŸค, แŸฅ, แŸฅแŸค, แŸงแŸข, แŸกแŸฉ, แŸจแŸ , แŸข, แŸงแŸค, แŸฃแŸฆ, แŸงแŸก, แŸฉ, ...

แžแžพแž›แŸแžแž‘แžถแŸ†แž„แž“แŸแŸ‡แž…แŸƒแžŠแž“แŸ’แž™แž”แŸ‰แžปแžŽแŸ’แžŽแžถแž“แŸ…แž€แŸ’แžšแžกแŸแž€แž˜แžพแž›แžŠแŸ†แž”แžผแž„? แž…แžผแžšแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžŠแŸ„แž™แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แŸ”
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 แŸกแŸจ, แŸฅแŸจ, แŸงแŸฉ, แŸฆแŸฅ, แŸคแŸฅ, แŸฉแŸฉ, แŸฉแŸ , แŸจแŸข, แŸขแŸ , แŸคแŸก, แŸกแŸฃ, แŸจแŸจ, แŸงแŸฆ, แŸจแŸข, แŸขแŸค, แŸฅ, แŸฅแŸค, แŸงแŸข, แŸกแŸฉ, แŸจแŸ , แŸข, แŸงแŸค, แŸฃแŸฆ, แŸงแŸก, แŸฉ, ...

แžขแŸ’แžœแžธแŸ—แž แžถแž€แŸ‹แžŠแžผแž…แž‡แžถแž›แŸ’แžขแž“แŸ…แž‘แžธแž“แŸแŸ‡ แžŸแžผแž˜แŸ’แž”แžธแžแŸ‚แž“แŸ…แž›แžพแž™แž“แŸ’แžแž แŸ„แŸ‡แž€แŸแžŠแŸ„แž™แŸ–
BlessRNG แžฌแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› RNG แžŠแžพแž˜แŸ’แž”แžธแž™แžปแžแŸ’แžแžทแž’แž˜แŸŒ
แžแŸ„แŸ‡แž˜แžพแž›แž”แžšแžทแž˜แžถแžŽ (แžขแžถแž“แž”แžธแž›แŸแžแž€แŸ’แž“แžปแž„แž–แŸแž›แžแŸ‚แž˜แžฝแž™)แŸ–
BlessRNG แžฌแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› RNG แžŠแžพแž˜แŸ’แž”แžธแž™แžปแžแŸ’แžแžทแž’แž˜แŸŒ
แž แžพแž™แž˜แŸ’แžแž„แž‘แŸ€แžแž›แŸ†แž“แžถแŸ†แŸ” แžœแžถแž˜แžทแž“แžขแžถแž…แž”แž„แŸ’แž€แžพแžแž€แžถแžšแž˜แžพแž›แžƒแžพแž‰แž‡แžถแž”แžฝแž“แžœแžทแž˜แžถแžแŸ’แžšแž”แžถแž“แž‘แŸแŸ” แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž‚แŸ†แžšแžผแžขแžถแž…แž˜แžถแž“แž“แŸ…แž›แžพแžœแžทแž˜แžถแžแŸ’แžšแž“แŸแŸ‡ แž“แžทแž„แž“แŸ…แž›แžพแž‘แŸ†แž แŸ†แž’แŸ†แž‡แžถแž„แž“แŸแŸ‡แŸ”

แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแž‚แŸ’แžšแžธแž”แž‚แŸ’แžšแžธแž” แžŠแŸ‚แž›แžแž˜แŸ’แžšแžผแžœแž€แžถแžšแžแžนแž„แžšแŸ‰แžนแž„แž”แŸ†แž•แžปแžแžแŸ’แžšแžผแžœแž”แžถแž“แžŠแžถแž€แŸ‹แž›แžพ PRNGs แžŸแŸ’แžแžถแž“แž—แžถแž–แž”แŸ‚แž”แž“แŸแŸ‡แž˜แžทแž“แžขแžถแž…แž‘แž‘แžฝแž›แž™แž€แž”แžถแž“แžแžถแž˜แž”แŸ’แžšแž—แŸแž‘แž‘แŸแŸ” แžŠแžผแž…แŸ’แž“แŸแŸ‡ แž€แŸ’แž”แžฝแž“แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž–แžทแžŸแŸแžŸแžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแžกแžพแž„แžŠแžพแž˜แŸ’แž”แžธแžœแžถแž™แžแž˜แŸ’แž›แŸƒแž‚แžปแžŽแž—แžถแž–แžšแž”แžŸแŸ‹แžœแžถ แžŠแŸ‚แž›แž™แžพแž„แž“แžนแž„แž˜แžทแž“แž”แŸ‰แŸ‡แž–แžถแž›แŸ‹แž“แŸ…แž–แŸแž›แž“แŸแŸ‡แž‘แŸแŸ” แž”แŸ’แžšแž’แžถแž“แž”แž‘แž‚แžบแž‘แžผแž›แŸ†แž‘แžผแž›แžถแž™ แž แžพแž™แžŸแž˜แž“แžนแž„แž‘แž‘แžฝแž›แž”แžถแž“แžขแžแŸ’แžแž”แž‘แžŠแžถแž…แŸ‹แžŠแŸ„แž™แžกแŸ‚แž€แž˜แžฝแž™แŸ”

แžŸแžถแž€แž›แŸ’แž”แž„

แž”แžพโ€‹แž™แžพแž„โ€‹แž˜แžทแž“โ€‹แžŠแžนแž„โ€‹แžขแŸ’แžœแžธโ€‹แžฒแŸ’แž™โ€‹แž”แŸ’แžšแžถแž€แžŠ แžแžพโ€‹แžแŸ’แžšแžผแžœโ€‹แž’แŸ’แžœแžพโ€‹แž™แŸ‰แžถแž„โ€‹แžŽแžถ? แžแžพแžœแžถแžŸแž˜แž“แžนแž„แž€แžถแžšแž†แŸ’แž›แž„แž€แžถแžแŸ‹แž•แŸ’แž›แžผแžœแž‘แŸ แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž˜แžทแž“แžŠแžนแž„แžแžถแž—แŸ’แž›แžพแž„แž…แžšแžถแž…แžšแžŽแŸแž˜แžฝแž™แžŽแžถแžขแž“แžปแž‰แŸ’แž‰แžถแž? แž•แž›แžœแžทแž”แžถแž€แžขแžถแž…แžแžปแžŸแž‚แŸ’แž“แžถแŸ”

แžŠแžผแž…แž‚แŸ’แž“แžถแžŠแŸ‚แžšแž…แŸ†แž–แŸ„แŸ‡แž—แžถแž–แž…แŸƒแžŠแž“แŸ’แž™แžŠแŸแž›แŸ’แž”แžธแž“แŸ…แž€แŸ’แž“แžปแž„ UnityแŸ” แž‡แžถแž€แžถแžšแž›แŸ’แžขแž”แŸ’แžšแžŸแžทแž“แž”แžพแžฏแž€แžŸแžถแžšแž”แž„แŸ’แž แžถแž‰แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž…แžถแŸ†แž”แžถแž…แŸ‹ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžšแžฟแž„แžšแŸ‰แžถแžœแžŠแŸ‚แž›แž”แžถแž“แž›แžพแž€แžกแžพแž„แž“แŸ…แžŠแžพแž˜แžขแžแŸ’แžแž”แž‘แž“แŸแŸ‡แž”แžถแž“แž€แžพแžแžกแžพแž„แž™แŸ‰แžถแž„แž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แžŠแŸ„แž™แžŸแžถแžšแžแŸ‚แžแŸ’แžœแŸ‡แž—แžถแž–แž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แžŠแŸ‚แž›แž…แž„แŸ‹แž”แžถแž“แŸ”

แž แžพแž™โ€‹แž”แŸ’แžšแžŸแžทแž“โ€‹แž”แžพโ€‹แžขแŸ’แž“แž€โ€‹แž˜แžทแž“โ€‹แžŠแžนแž„โ€‹แž–แžธโ€‹แžšแž”แŸ€แž”โ€‹แžŠแŸ‚แž›โ€‹แžงแž”แž€แžšแžŽแŸโ€‹แž“แŸแŸ‡โ€‹แžŠแŸ†แžŽแžพแžšโ€‹แž€แžถแžš แžขแŸ’แž“แž€โ€‹แž“แžนแž„โ€‹แž˜แžทแž“โ€‹แžขแžถแž…โ€‹แž”แŸ’แžšแžพโ€‹แžœแžถโ€‹แž”แžถแž“โ€‹แžแŸ’แžšแžนแž˜โ€‹แžแŸ’แžšแžผแžœโ€‹แž‘แŸแŸ” แž‡แžถแž‘แžผแž‘แŸ… แžŠแž›แŸ‹แž–แŸแž›แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž–แžทแž“แžทแžแŸ’แž™ แž“แžทแž„แž’แŸ’แžœแžพแž€แžถแžšแž–แžทแžŸแŸ„แž’แž“แŸ แžŠแžพแž˜แŸ’แž”แžธแž”แŸ’แžšแžถแž€แžŠแžแžถแž™แŸ‰แžถแž„แž แŸ„แž…แžŽแžถแžŸแŸ‹แž˜แžถแž“แž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แŸ”

แžŠแŸ†แžŽแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž‚แžบแžŸแžถแž˜แž‰แŸ’แž‰ แž“แžทแž„แž˜แžถแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž– - แž”แŸ’แžšแž˜แžผแž›แžŸแŸ’แžแžทแžแžท แž‘แž‘แžฝแž›แž”แžถแž“แž‘แžทแž“แŸ’แž“แž“แŸแž™แž‚แŸ„แž›แž”แŸ†แžŽแž„ แž“แžทแž„แž˜แžพแž›แž›แž‘แŸ’แž’แž•แž›แŸ”

แž”แŸ’แžšแž’แžถแž“แž”แž‘แž“แŸƒแž€แžถแžšแžŸแžทแž€แŸ’แžŸแžถ

แž˜แžถแž“แžœแžทแž’แžธแž‡แžถแž…แŸ’แžšแžพแž“แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแžแž›แŸแžแž…แŸƒแžŠแž“แŸ’แž™แž“แŸ…แž€แŸ’แž“แžปแž„ Unity - แž™แžพแž„แž”แžถแž“แžŸแžถแž€แž›แŸ’แž”แž„แž”แŸ’แžšแžถแŸ†แŸ”

  1. System.Random.Next(). แž”แž„แŸ’แž€แžพแžแž…แŸ†แž“แžฝแž“แž‚แžแŸ‹แž€แŸ’แž“แžปแž„แž‡แžฝแžšแžแž˜แŸ’แž›แŸƒแžŠแŸ‚แž›แž”แžถแž“แž•แŸ’แžแž›แŸ‹แžฑแŸ’แž™แŸ”
  2. System.Random.NextDouble(). แž”แž„แŸ’แž€แžพแžแž›แŸแžแž—แžถแž–แž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แž–แžธแžšแžŠแž„แž€แŸ’แž“แžปแž„แž…แž“แŸ’แž›แŸ„แŸ‡แž–แžธ [0; แŸก).
  3. UnityEngine.Random.Range(). แž”แž„แŸ’แž€แžพแžแž›แŸแžแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แžแŸ‚แž˜แžฝแž™ (แžขแžŽแŸ’แžแŸ‚แž) แž€แŸ’แž“แžปแž„แž‡แžฝแžšแžแž˜แŸ’แž›แŸƒแžŠแŸ‚แž›แž”แžถแž“แž•แŸ’แžแž›แŸ‹แžฑแŸ’แž™แŸ”
  4. UnityEngine.Random.valueแŸ” แž”แž„แŸ’แž€แžพแžแž›แŸแžแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แžแŸ‚แž˜แžฝแž™ (แžขแžŽแŸ’แžแŸ‚แž) แž€แŸ’แž“แžปแž„แž…แž“แŸ’แž›แŸ„แŸ‡แž–แžธ [0; แŸก).
  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, build per device, Mono, .NET Standard 2.0
  • แž”แŸ’แžšแž–แŸแž“แŸ’แž’แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžš iOS
    โ€” Unity v2018.3.14f1, build per device, il2cpp, .NET Standard 2.0

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

แž™แžพแž„แž˜แžถแž“แžœแžทแž’แžธแž•แŸ’แžŸแŸแž„แž‚แŸ’แž“แžถแž‡แžถแž…แŸ’แžšแžพแž“แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแžแž›แŸแžแž…แŸƒแžŠแž“แŸ’แž™แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แžฝแž€แžœแžถแž“แžธแž˜แžฝแž™แŸ— แž™แžพแž„แž“แžนแž„แžŸแžšแžŸแŸแžšแžแŸ’แž“แžถแž€แŸ‹แžšแžปแŸ†แžŠแžถแž…แŸ‹แžŠแŸ„แž™แžกแŸ‚แž€ แžŠแŸ‚แž›แž‚แžฝแžšแž•แŸ’แžแž›แŸ‹แŸˆ

  1. แž›แž‘แŸ’แž’แž—แžถแž–โ€‹แž€แŸ’แž“แžปแž„โ€‹แž€แžถแžšโ€‹แž€แŸ†แžŽแžแŸ‹โ€‹แž‡แžฝแžšโ€‹แžแž˜แŸ’แž›แŸƒ [min/max)แŸ” แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž€แŸ†แžŽแžแŸ‹แžแžถแž˜แžšแž™แŸˆแžขแŸ’แž“แž€แžŸแžถแž„แžŸแž„แŸ‹แŸ”
  2. แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แžแžแŸ’แžšแžกแž”แŸ‹ MF แŸ” แž…แžผแžšโ€‹แž‡แŸ’แžšแžพแžŸแžšแžพแžŸโ€‹แž”แžŽแŸ’แžแŸ‚แžโ€‹แžแžถแž˜โ€‹แž”แŸ’แžšแž—แŸแž‘ แž–แŸ’แžšแŸ„แŸ‡โ€‹แžœแžถโ€‹แž‘แžผแž‘แŸ…โ€‹แž‡แžถแž„แŸ”
  3. แžˆแŸ’แž˜แŸ„แŸ‡แž“แŸƒแžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แžแž‡แŸ†แž“แžถแž“แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŸแž˜แŸ’แž‚แžถแž›แŸ‹แž›แž‘แŸ’แž’แž•แž›แŸ” แžŠแžพแž˜แŸ’แž”แžธแž—แžถแž–แž„แžถแž™แžŸแŸ’แžšแžฝแž› แž™แžพแž„แž“แžนแž„แžแŸ’แžšแžกแž”แŸ‹แž‡แžถแžแž˜แŸ’แž›แŸƒแžˆแŸ’แž˜แŸ„แŸ‡แž–แŸแž‰แž“แŸƒแžแŸ’แž“แžถแž€แŸ‹ + แžˆแŸ’แž˜แŸ„แŸ‡แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžšแžŠแŸ‚แž›แž”แŸ’แžšแžพแžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแž MF แŸ”

แž‡แžถแžŠแŸ†แž”แžผแž„ แž…แžผแžšแž™แžพแž„แž”แŸ’แžšแž€แžถแžŸแž“แžผแžœ abstraction แžŠแŸ‚แž›แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แžแŸ†แžŽแžถแž„แžŠแŸ„แž™ IRandomGenerator interfaceแŸ–

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; แŸก). แžŠแžพแž˜แŸ’แž”แžธแž”แž‰แŸ’แž…แžถแŸ†แž„แžœแžถแž‘แŸ…แž›แžพแžขแŸ’แžœแžธแžŠแŸ‚แž›แž”แžถแž“แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„ constructor แž™แžพแž„แž”แŸ’แžšแžพแž“แž–แŸ’แžœแž“แŸ’แž’แžŸแžถแž˜แž‰แŸ’แž‰แŸ– X * (max โˆ’ min) + min แŸ”

using System;

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


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


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


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

แž€แžถแžšแžขแž“แžปแžœแžแŸ’แž UnityEngine.Random.Range()

แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แžแž“แŸƒแžแŸ’แž“แžถแž€แŸ‹แž‹แžทแžแžทแžœแž“แŸ’แž UnityEngine.Random แž“แŸแŸ‡แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž€แŸ†แžŽแžแŸ‹แž‡แžฝแžšแž“แŸƒแžแž˜แŸ’แž›แŸƒ แž“แžทแž„แžแŸ’แžšแžกแž”แŸ‹แž”แŸ’แžšแž—แŸแž‘แžขแžŽแŸ’แžแŸ‚แžแŸ” แžขแŸ’แž“แž€แž˜แžทแž“แž…แžถแŸ†แž”แžถแž…แŸ‹แž’แŸ’แžœแžพแž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž”แž“แŸ’แžแŸ‚แž˜แž‘แŸแŸ”

using UnityEngine;

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


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


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


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

แž€แžถแžšแžขแž“แžปแžœแžแŸ’แž UnityEngine.Random.value

แž›แž€แŸ’แžแžŽแŸˆแžŸแž˜แŸ’แž”แžแŸ’แžแžทแžแž˜แŸ’แž›แŸƒแž“แŸƒแžแŸ’แž“แžถแž€แŸ‹แž‹แžทแžแžทแžœแž“แŸ’แž UnityEngine.Random แžแŸ’แžšแžกแž”แŸ‹แž”แŸ’แžšแž—แŸแž‘แžขแžŽแŸ’แžแŸ‚แžแž–แžธแž‡แžฝแžšแžแž˜แŸ’แž›แŸƒแžแŸแžš [0; แŸก). แž…แžผแžšโ€‹แž™แžพแž„โ€‹แžŠแžถแž€แŸ‹โ€‹แž‚แž˜แŸ’แžšแŸ„แž„โ€‹แžœแžถโ€‹แž‘แŸ…โ€‹แž›แžพโ€‹แž‡แžฝแžšโ€‹แžŠแŸ‚แž›โ€‹แž”แžถแž“โ€‹แž•แŸ’แžแž›แŸ‹โ€‹แžฑแŸ’แž™โ€‹แž€แŸ’แž“แžปแž„โ€‹แžœแžทแž’แžธโ€‹แžŠแžผแž…โ€‹แž‚แŸ’แž“แžถโ€‹แž“แžนแž„โ€‹แž–แŸแž›โ€‹แžขแž“แžปแžœแžแŸ’แž 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 แžแŸ’แžšแžกแž”แŸ‹แž…แŸ†แžŽแžปแž…แžขแžŽแŸ’แžแŸ‚แžแž“แŸƒแž”แŸ’แžšแž—แŸแž‘ float แž“แžทแž„แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž‡แžฝแžšแž“แŸƒแžแž˜แŸ’แž›แŸƒแŸ” แž—แžถแž–แžแžปแžŸแž”แŸ’แž›แŸ‚แž€แž‚แŸ’แž“แžถแžแŸ‚แž˜แžฝแž™แž‚แžแŸ‹แž‚แžบแžแžถแžงแž‘แžถแž แžšแžŽแŸแž“แžธแž˜แžฝแž™แŸ—แž“แŸƒ 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 แžŠแŸ‚แž›แž“แžนแž„แž’แŸ’แžœแžพแž€แžถแžšแž„แžถแžšแž…แžถแŸ†แž”แžถแž…แŸ‹แž‘แžถแŸ†แž„แžขแžŸแŸ‹ แž แžพแž™แž€แŸ’แž“แžปแž„แž–แŸแž›แžแŸ‚แž˜แžฝแž™แž‘แž‘แžฝแž›แžแžปแžŸแžแŸ’แžšแžผแžœแž…แŸ†แž–แŸ„แŸ‡แžขแž“แŸ’แžแžšแž€แž˜แŸ’แž˜แž‡แžถแž˜แžฝแž™ UI แŸ”

แž…แžผแžšแž€แŸ†แžŽแžแŸ‹แž‘แŸ†แž แŸ†แž“แŸƒแžŸแŸ†แžŽแžปแŸ†แž‘แžทแž“แŸ’แž“แž“แŸแž™ แž“แžทแž„แž‡แžฝแžšแž“แŸƒแžแž˜แŸ’แž›แŸƒ MF แž แžพแž™แž€แŸแž‘แž‘แžฝแž›แž”แžถแž“แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžšแžŠแŸ‚แž›แžแŸ’แžšแžกแž”แŸ‹แžขแžถแžšแŸแž“แŸƒแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž—แŸ’แž›แžพแž„แžŠแŸ‚แž›แž”แžถแž“แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ แž“แžทแž„แžšแžฝแž…แžšแžถแž›แŸ‹แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ†แžŽแžพแžšแž€แžถแžšแŸ”

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

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

        ...

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

        ...
    }
}

แžฅแžกแžผแžœโ€‹แž™แžพแž„โ€‹แž”แž„แŸ’แž€แžพแžโ€‹แžŸแŸ†แžŽแžปแŸ†โ€‹แž‘แžทแž“แŸ’แž“แž“แŸแž™แŸ” แž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแž“แŸแŸ‡ แž€แžถแžšแž”แž„แŸ’แž€แžพแžแž‘แžทแž“แŸ’แž“แž“แŸแž™แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžŸแŸ†แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž€แžแŸ‹แžแŸ’แžšแžถแž›แž‘แŸ’แž’แž•แž›แž‘แŸ…แž€แŸ’แž“แžปแž„แžŸแŸ’แž‘แŸ’แžšแžธแž˜แžขแžแŸ’แžแž”แž‘ (แž€แŸ’แž“แžปแž„แž‘แž˜แŸ’แžšแž„แŸ‹ csv)แŸ” แžŠแžพแž˜แŸ’แž”แžธแžšแž€แŸ’แžŸแžถแž‘แžปแž€แžแž˜แŸ’แž›แŸƒแž“แŸƒ IRandomGenerator แž“แžธแž˜แžฝแž™แŸ— แž‡แžฝแžšแžˆแžšแžŠแžถแž…แŸ‹แžŠแŸ„แž™แžกแŸ‚แž€แžšแž”แžŸแŸ‹แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ‚แž„แž…แŸ‚แž€ แž แžพแž™แž‡แžฝแžšแž‘แžธแž˜แžฝแž™แž˜แžถแž“ แžˆแŸ’แž˜แŸ„แŸ‡แžšแž”แžŸแŸ‹แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž—แŸ’แž›แžพแž„แŸ”

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

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

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

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

        ...
    }
}

แžขแŸ’แžœแžธแžŠแŸ‚แž›แž“แŸ…แžŸแŸแžŸแžŸแž›แŸ‹แž‚แžบแžแŸ’แžšแžผแžœแž แŸ…แžœแžทแž’แžธแžŸแžถแžŸแŸ’แžแŸ’แžš GenerateCsvDataSet แž แžพแž™แžšแž€แŸ’แžŸแžถแž‘แžปแž€แž›แž‘แŸ’แž’แž•แž›แž‘แŸ…แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžš แžฌแž•แŸ’แž‘แŸแžšแž‘แžทแž“แŸ’แž“แž“แŸแž™แž—แŸ’แž›แžถแž˜แŸ—แžแžถแž˜แž”แžŽแŸ’แžแžถแž‰แž–แžธแžงแž”แž€แžšแžŽแŸแž…แžปแž„แž‘แŸ…แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸแŸ”

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


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

        ...
    }
}

แž”แŸ’แžšแž—แž–แž‚แž˜แŸ’แžšแŸ„แž„แž‚แžบแž“แŸ… GitLab.

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

แž‚แŸ’แž˜แžถแž“แžขแž–แŸ’แž—แžผแžแž แŸแžแžปแž€แžพแžแžกแžพแž„แž‘แŸแŸ” แžขแŸ’แžœแžธโ€‹แžŠแŸ‚แž›โ€‹แž–แžฝแž€โ€‹แž‚แŸโ€‹แž”แžถแž“โ€‹แžšแŸ†แž–แžนแž„โ€‹แž‘แžปแž€โ€‹แž‚แžบโ€‹แž‡แžถโ€‹แžขแŸ’แžœแžธโ€‹แžŠแŸ‚แž›โ€‹แž–แžฝแž€โ€‹แž‚แŸโ€‹แž‘แž‘แžฝแž›โ€‹แž”แžถแž“ - แž€แŸ’แž“แžปแž„โ€‹แž‚แŸ’แžšแž”แŸ‹โ€‹แž€แžšแžŽแžธโ€‹แž‘แžถแŸ†แž„โ€‹แžขแžŸแŸ‹ แž€แžถแžšโ€‹แž…แŸ‚แž€โ€‹แž…แžถแž™โ€‹แžŠแŸ„แž™โ€‹แž˜แžทแž“โ€‹แž˜แžถแž“โ€‹แžแž˜แŸ’แžšแžปแž™โ€‹แž–แžธโ€‹แž€แžถแžšโ€‹แžŸแž˜แž‚แŸ†แž“แžทแžแŸ” แžแŸ’แž‰แžปแŸ†โ€‹แž˜แžทแž“โ€‹แžƒแžพแž‰โ€‹แž…แŸ†แžŽแžปแž…โ€‹แž€แŸ’แž“แžปแž„โ€‹แž€แžถแžšโ€‹แžŠแžถแž€แŸ‹โ€‹แž€แŸ’แžšแžถแž แŸ’แžœโ€‹แžŠแžถแž…แŸ‹โ€‹แžŠแŸ„แž™โ€‹แžกแŸ‚แž€โ€‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹โ€‹แžœแŸแž‘แžทแž€แžถโ€‹แž“แŸ„แŸ‡โ€‹แž‘แŸ - แž–แžฝแž€แž‚แŸโ€‹แž‘แžถแŸ†แž„โ€‹แžขแžŸแŸ‹โ€‹แž”แž„แŸ’แž แžถแž‰โ€‹แž›แž‘แŸ’แž’แž•แž›โ€‹แž”แŸ’แžšแž แŸ‚แž›โ€‹แž‚แŸ’แž“แžถแŸ”

แž€แžถแžšแž–แžทแžแž‚แžบแž“แŸแŸ‡แŸ–
BlessRNG แžฌแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› RNG แžŠแžพแž˜แŸ’แž”แžธแž™แžปแžแŸ’แžแžทแž’แž˜แŸŒ

แž€แžถแžšแž˜แžพแž›แžƒแžพแž‰แž“แŸƒแž›แŸ†แžŠแžถแž”แŸ‹แž“แŸ…แž›แžพแž™แž“แŸ’แžแž แŸ„แŸ‡แž–แžธแžœแžทแž’แžธแžŸแžถแžŸแŸ’แžšแŸ’แžแž‘แžถแŸ†แž„แž”แŸ’แžšแžถแŸ†แž‡แŸ†แž“แžถแž“แŸ‹แŸ–
BlessRNG แžฌแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› RNG แžŠแžพแž˜แŸ’แž”แžธแž™แžปแžแŸ’แžแžทแž’แž˜แŸŒ

แž“แžทแž„แž€แžถแžšแž˜แžพแž›แžƒแžพแž‰แž‡แžถ 3D แŸ” แžแŸ’แž‰แžปแŸ†โ€‹แž“แžนแž„โ€‹แž‘แžปแž€โ€‹แžแŸ‚โ€‹แž›แž‘แŸ’แž’แž•แž›โ€‹แž“แŸƒ System.Random.Next() แžŠแžพแž˜แŸ’แž”แžธโ€‹แž€แžปแŸ†โ€‹แžฒแŸ’แž™โ€‹แž˜แžถแž“โ€‹แžแŸ’แž›แžนแž˜แžŸแžถแžšโ€‹แžŠแžผแž…แž‚แŸ’แž“แžถโ€‹แž”แŸแŸ‡แž”แžทแž‘แŸ”
BlessRNG แžฌแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› RNG แžŠแžพแž˜แŸ’แž”แžธแž™แžปแžแŸ’แžแžทแž’แž˜แŸŒ

แžšแžฟแž„แžŠแŸ‚แž›แž”แžถแž“แž”แŸ’แžšแžถแž”แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แžขแŸ†แž–แžธแž€แžถแžšแž…แŸ‚แž€แž…แžถแž™แž’แž˜แŸ’แž˜แžแžถแžšแž”แžŸแŸ‹ UnityEngine.Random แž˜แžทแž“แž”แžถแž“แž“แžทแž™แžถแž™แžกแžพแž„แžœแžทแž‰แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„แž‘แŸแŸ– แž‘แžถแŸ†แž„แžŠแŸ†แž”แžผแž„แž‚แžบแžแžปแžŸ แžฌแžขแŸ’แžœแžธแž˜แžฝแž™แž”แžถแž“แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž“แŸ…แž€แŸ’แž“แžปแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แŸ” แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžฅแžกแžผแžœแž“แŸแŸ‡แž™แžพแž„แž”แŸ’แžšแžถแž€แžŠแŸ”

แž”แŸ’แžšแž—แž–: www.habr.com

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹