แแ
แแแแปแแแถแแขแแทแแแแแแแ แแแแ แแถแแฟแแแขแแแแแแแผแแแแแถแแแขแแแธแแฝแแแถแแฝแแแนแแแถแแ
แแแแแแ Unity แแถแ Random แแแแถแแแแแแฝแแแแแแถแแแแฟแแแแ แ แพแแแแแแแแแถแแถแแฝแแแนแแแถแแถแ System.Random แ แแ
แแแแแฝแ แแ
แแพแแแแแแแแฝแ แแแแปแแแแฝแแแถแแ
แแแถแแแขแถแแแแแแแแถ แแถแแแแธแแขแถแ
แแแแพแแแถแแแปแแแแแถ (แแแแแธแแถแแฝแแแแแฝแแแแแถแแแถแแ
แแแ
แถแแแผแ
แแแแถแแแแแ)แ
แแแแแถแแแแแแฝแแแแแทแแแถแแ
แผแแแ
แแแแปแแแแแแแถแแแแแขแทแแแ - แแถแแแแแแแแแถแแแ แพแแแแแแถแแแแแถแแแแแแผแแแ
System.Random แแถแแแแแแแแถแแแแแ แถแแถแแแขแแแ แฅแกแผแแแแ แแพแแแถแแแแแแแ
แ
แทแแแแแทแแทแแแแแพแแแถแฑแแแแถแแแแแแแแขแทแ แแทแแแแแพแแถแแแแแถแแแแแถแแแแแแทแ
แแแแแฝแ
แ แแพ RNGs "แแแขแแ" แฌแขแถแ
แแแแถแแแแแแถแ แแทแแแฝแแแถแแแแแแแผแแแแแพแแแพแแ แแถแแแแแแ
แแแ แแแแปแแแถแแฎแ
แแแพแแแถแแแแแแแผแแแแทแแแแปแแแแแถแขแแแธ "แแถแแแแแแแแแแแ" แแแแแแฝแแแ - แ
แผแแแพแแแแแถแแถแแแแแแแแแแแธแแแแแแแแแแแแแแแทแแแแแแแแแแแถแแฝแแแนแแขแแแแแแแแถแแแแแแถแแ
แแแแแแทแแธแขแแแแแแแแธแ แฌ RNG แแบแแทแแแถ RNG
แแแแแทแแแพแขแแแแแแแถแแแแแแถแแแงแแแแแแแแแแพแแแแแ แแแแแแแฝแ แ แพแ แขแแแแขแถแ แแแแแแ แแแแแ "แแถแแแถแแแแแ" แแแแถแแแ
แแแแ แแแแแ (RN) แแบแแถแแแแถแแแแแแแแแแแแถแแแแแแพแแแแแแแแพแแแแพแแแถแแ แแแแแ (แแนแแแ) แแแแแถแแแแแแแ entropy แ แแแแแบแแแแแบแแถแแแแถแแแแแแแถแแปแแแแแแฝแแแแแทแแแแแผแแแถแแแถแแแแแแแแถแแแแ แแแถแแแแแทแแแทแแแแถแแถแแฝแแกแพแ - แแฝแแแแแทแแแถแแแแแถแแแแแแแแผแแ แแแปแแทแแฅแแแแทแแแแแ
แขแแแธแแแแแแแแพแแแแแ แแแแแแแแแผแแแถแแแแ แ แแถ random number generator (RNG)แ แแถแ แถแแแแผแ แแถแแถแขแแแธแแแแแแแแถแแแบแแแ แแแปแแแแแแแแแทแแแพแแพแแแแแถแแแแแแผแแแธแแแแนแแแแธแแ แแถแแขแแปแแแแ แแแแแถแแแทแแแถแแทแแแถแแแแแแแแแแปแแแถแแขแแปแแแแ algorithm แแแแแแทแแธแแแแแถแแแแแแแพแแแแแถแแแแแแแแแ
แ แแแปแแแแบแขแแแแแแถแแแแแถแแแนแแแแแผแ แแแแถแแ แแแแปแแแแแฟแแขแแกแทแ แแแแผแแทแแแแแพแแ แแพแแแแถแแแถแแ แแแแ แแแแแแแแแแถแ แแแแแ แ แพแแแแถแแแธแแแแแพแแแแแแแถแแแแแแ แแถแแปแแแถแแแแแแแถแแแขแถแแปแแแแแแแแแแถแแแแแแแแแถแแ แแแถแแแ แแแแแถแแแแแแถแแฏแแแแแแฝแแ แแแฝแแแแแปแแแทแแแ IT แแแแแบแแถแแแแ แถแแแแแแแแแ (แงแแถแ แแแ แแแแธแแแแแธแ) แแแปแแแแแแแแแถแแแขแแแแแแแแแแแแแถแแแแแแแแแแถแแแแแขแถแ แแแฝแแแแแถแแแถแแแแแแปแแ
แแถแ แถแแแถแ แแแแแปแแแถแแแแแแแแแแฝแแแแแแแแถแแแแแแนแแแแแแแแแแแทแ แแแแแธแแถแแทแแแแแแถแแแแ แแแแแแแแแแ แแแปแแแแแฑแแแแทแแแแแปแแแถแแแแแขแถแ แแแแพแแ แแถแ - แแแแแแ แ แแถแแแแ แแแแแ (PRN) แ แแแแฝแแแแแแแแถแแแแแปแแแแแธแแแแแแแผแแแถแแแแ แ แแถ pseudorandom number generator (PRNG) แ
แแถแแแแแแพแแแถแ แแแพแแแแแแถแแแแแแแพแ PRNG แแแปแแแแแแถแแแแแแแแแแแนแแแถแแแแแแแแแแแแถแแแขแแแแแถแแแแแแถแ
- แแแแแผแแแถแแแแแแถแแแแถแแ
แถแแแแแแพแแแแแ
PRNG แแทแแแถแแแแแแแแ entropy แแ แแผแ แแแแแแถแแแแผแแแแแแแแแแแแถแแแถแแแแแผแแแปแแแแแแแแพแแแแถแแแ แแถแแแแผแแแถแแแแแแถแแแแถแแแ (แฌแแแทแ แแแ) แ แพแแแแแผแแแถแแแแ แ แแถแแแแถแแแแผแ (แแแแถแแแแผแแ แแแแแ) แ แแถแแนแแแถแแ แงแแแแแแแถแแแแถแกแทแแถแแแแพแแแถแ แฌแแแแผแแแถแแแแแแแแแแแแแแแแแแแแแผแแแถแแแแแพแแถแแแแถแแแแผแแ
- แแถแแแแแแแผแแแถแแแแแถแแแ
PRNG แแแแผแแแถแแแแแแแแถแแแแแแปแ แแผแ แแแแแแแแถแแแแผแแแแแแถแแแแแแถแแแแแแปแแขแแกแปแแแแแ แถแแแแแแพแแแแแผแแแแแแแแแแกแแแแธแแแแถแแแแแแแแแถแแแแขแแถแแแแถแแแแผแแ แแแแแถแแแแแแถ PRNG แแถแ แแแแแกแแแแแแแถแแ แถแแแแแแพแแแถแแฝแแแแแถแแแแผแแแผแ แแแแถ (แแ แแแแแแแแแแแแถ แแแแปแแแแแแแทแแธแแแแแแแแแถ แแ แแพแงแแแแแแแแแแแแแแถ) แแนแแแแแแพแแแแแถแแแแผแ แแแแถแ
แขแแแแแแแแแผแแแนแแแธแแถแแ
แแแ
แถแแแแแผแแถแแแธแแธแแแแแแแแแแแแแแแแ PRNG - แแพแแแแขแแแธแแแแแถแแนแแแแแแพแ แแทแแแถแแฝแแแนแแแแแผแแถแแแธแแธแแแขแแแธแ แแถแแ
แแแพแแแถแแนแแแถแแแแแแแบแแถแแถแแ
แแแ
แถแแแแแแแถ แฌแแถแแ
แแแ
แถแแฏแแแแแแถแแ
แแถแแ
แแแ
แถแแแแแแแถ (แแแแแ) แแทแแแถแแ
แแแ
แถแแฏแแแแแแถแ (แแแแถแ)
แงแแแถแแถแแพแแแถแแแถแแแแแถแแแแแแแปแแแแทแแแแแแแแถแ 24 แแแแปแแ แแแแแทแแแพแขแแแแแแแแถ แแแแผแแถแแแธแแธแแแแแแถแแแแฝแแแถแแแแแแฝแแแนแแแแแพแแนแ 1/24 (แแผแ แแแแถแแนแแแแแผแแถแแแธแแธแแแแแแถแแแแฝแแแถแแแแแแแแแแแแ)แ แแแแแทแแแพแขแแแแแแแพแแถแแแแแ แแแพแ แแทแแแแแแแแถแแแแแแ แขแแแแแนแแแแแแถแแแแพแแแถแแแแแถแแแขแแแแแแถแแแ แแแแถแแฝแแแนแแแแแแแแแแแแ แถแแแแแแ แแแแแแถแ แแแแถแแ แแถแแแแแถแแแแแแขแถแ แแแแผแแแถแแ แถแแแแปแแแถแแถ RNG แแถแแฝแแแนแแแถแแ แแแ แถแแฏแแแแแแถแแ
แ แปแแแพแขแแแแแแแแแแถแแแกแปแแกแถแแแแถแแ 10 แแแแถแแแแแแปแแแแแแแแฝแ แ แพแแแถแแแแทแแแแปแแแปแ? แแพแฏแแแแแแถแแแนแแแแแผแแแถแแแแแแถแแแแแถแแแแถแแ? แแ แแถแแ แแแพแแแถแแนแแแถแแ แ แแแฝแแแนแแแแแถแแแแนแแแ แแทแ 125 แแทแแแแป แแแแแบแแแแแแแแแแแแแแแฝแแ แแแฝแแ แ แพแแแถแแแแแแ แแผแแแแธแแแแปแแแแแแแแ แแ แขแแแแขแถแ แแแถแแแแแแแถแแแแแแแแแถแแแแขแแถแแ
แ แแแปแแแแบแแถแแถแแ แแแฝแแ แแแพแแแแแปแแแแแแแแแแพแแแแธแแแฝแแแถแแแทแแแแปแแแแแแ แแถแแแแแแแแถแแแธแแถ แแแแแแแทแ - แ แพแแแถแแแแ แแแแผแแถแแแธแแธแแแแแแถแแแถแแแแแแแถแแแแแแถแแ แแแแแทแแแพแแทแแแแแแแแแแแแแผแแแถแแแแแพแแแพแ แแถแแนแแแแแ แถแแแแแแ แแแแนแแแผแแแถแแแแแแแแแแนแแ แแผแ แแแแแแถแแฝแแแนแแแถแแแถแแแแแแนแแแแแ แแแแแแแแแแแแแแถแแแกแปแแกแถแแแ แแแฝแ 10 แขแถแ แแแแผแแแถแแแแ แ แแถ RNG แแถแแฝแแแนแแแถแแ แแแ แถแแแแแแแถแ
แงแแถแ แแแแแฝแแแแแแถแแแแแพแแแแแแแแ
แแพแแแแแ แแ - แแถแแแ
แแแแแแ
แ แขแแแแแถแแแแนแแแแแถแแแถ RNG แแแแแแแแพแแแแแแผ (x, y) แแแแแแแผแแแถแแแแแ แถแแแ
แแพแแแแถแ แแแ
แแแแแแแแแถแแแแแพแแแ
แแถแแแแแแแแบแแทแแแ
แแทแแแธแแทแแแทแ - แแแแแบแแถ 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 แกแจ, แฅแจ, แงแฉ, แฆแฅ, แคแฅ, แฉแฉ, แฉแ , แจแข, แขแ , แคแก, แกแฃ, แจแจ, แงแฆ, แจแข, แขแค, แฅ, แฅแค, แงแข, แกแฉ, แจแ , แข, แงแค, แฃแฆ, แงแก, แฉ, ...
แแพแแแแแถแแแแแแ
แแแแแแแแปแแแแถแแ
แแแแกแแแแพแแแแแผแ? แ
แผแแ
แถแแแแแแพแแแแแแทแแทแแแแแพแแแถแแ
แแแ
แถแแ
แแถโแแพแโแแ
โแแทแโแฏแแแแแแถแ แแแปแแแแโแแแแแทแโแแพโแขแแแโแขแถแโแแแแถแแโแแโแแแโแแธแ แ แพแโแแแแแแถแโแแฝแแแถโแแถโแแผแขแแแแแโแแ
แแพโแแแแแ แแ แขแแแโแแนแโแแแฝแโแแถแโแ
แแแปแ
โแแแแ
แแแแถแแขแถแ
แแพแแแพแแแแถแแ
แแแถแแแ แ แพแแ
แถแแแแถแแแแธแแทแแแแแแแแ
แแแแปแแแแแถแแแแแแผแแแถแแแแแแแแแถแแแทแแธแแถแแแแถแแแแฝแ (แแแแแบแแถแแถแ 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 แกแจ, แฅแจ, แงแฉ, แฆแฅ, แคแฅ, แฉแฉ, แฉแ , แจแข, แขแ , แคแก, แกแฃ, แจแจ, แงแฆ, แจแข, แขแค, แฅ, แฅแค, แงแข, แกแฉ, แจแ , แข, แงแค, แฃแฆ, แงแก, แฉ, ...
แขแแแธแแ แถแแแแผแ
แแถแแแขแแ
แแธแแแ แแผแแแแธแแแแ
แแพแแแแแ แแแแแแแแ
แแแแแพแแแแทแแถแ (แขแถแแแธแแแแแแแปแแแแแแแแฝแ)แ
แ แพแแแแแแแแแแแแถแแ แแถแแทแแขแถแ
แแแแแพแแแถแแแพแแแพแแแถแแฝแแแทแแถแแแแแถแแแแ แแแปแแแแแแแแผแขแถแ
แแถแแแ
แแพแแทแแถแแแแแแ แแทแแแ
แแพแแแ แแแแแถแแแแแ
แแ แแแแปแแแถแแแแแธแแแแแธแ แแแแแแแแผแแแถแแแนแแแแนแแแแแปแแแแแผแแแถแแแถแแแแพ PRNGs แแแแถแแแถแแแแแแแแแทแแขแถแ แแแฝแแแแแถแแแถแแแแแแแแแแ แแผแ แแแแ แแแแฝแแแแแแแแถแแแทแแแแแแแผแแแถแแแแแแพแแกแพแแแพแแแแธแแถแแแแแแแแปแแแถแแแแแแแถ แแแแแพแแแนแแแทแแแแแแถแแแแ แแแแแแแแแ แแแแแถแแแแแบแแผแแแแผแแถแ แ แพแแแแแนแแแแฝแแแถแแขแแแแแแแถแ แแแแแกแแแแฝแแ
แแถแแแแแ
แแพโแแพแโแแทแโแแนแโแขแแแธโแฒแแโแแแแถแแ แแพโแแแแผแโแแแแพโแแแถแโแแถ? แแพแแถแแแแนแแแถแแแแแแแถแแแแแแผแแแ แแแแแทแแแพแขแแแแแทแแแนแแแถแแแแพแแ แแถแ แแแแแฝแแแถแขแแปแแแแถแ? แแแแทแแถแแขแถแ แแปแแแแแถแ
แแผแ แแแแถแแแแ แแแแแแถแแ แแแแแแแแแแแธแแ แแแแปแ Unityแ แแถแแถแแแแขแแแแแทแแแพแฏแแแถแแแแแ แถแแแแแแแถแแแแแขแทแแ แถแแแถแ แ แแแปแแแแแแฟแแแแถแแแแแแถแแแพแแกแพแแแ แแพแแขแแแแแแแแแแถแแแพแแกแพแแแแถแแแถแแแแถแแแแแแแถแแแแแแแแแถแแแถแแแแถแแแแแแ แแแแถแแ
แ แพแโแแแแแทแโแแพโแขแแแโแแทแโแแนแโแแธโแแแแโแแแโแงแแแแแโแแแโแแแแพแโแแถแ แขแแแโแแนแโแแทแโแขแถแ โแแแแพโแแถโแแถแโแแแแนแโแแแแผแโแแแ แแถแแผแแ แแแแแแแแแแแแแผแแแทแแทแแแ แแทแแแแแพแแถแแแทแแแแแ แแพแแแแธแแแแถแแแแถแแแถแแ แแ แแถแแแแถแแแถแแ แแแ แถแแ
แแแแแแแแแถแแแบแแถแแแแ แแทแแแถแแแแแแทแแแแแถแ - แแแแแผแแแแแทแแท แแแฝแแแถแแแทแแแแแแแแแแแแแ แแทแแแพแแแแแแแแ
แแแแแถแแแแแแแถแแแทแแแแถ
แแถแแแทแแธแแถแ แแแพแแแพแแแแธแแแแแพแแแแแ แแแแแแแ แแแแปแ Unity - แแพแแแถแแแถแแแแแแแแแถแแ
- System.Random.Next(). แแแแแพแแ แแแฝแแแแแแแแปแแแฝแแแแแแแแแแแถแแแแแแแฑแแแ
- System.Random.NextDouble(). แแแแแพแแแแแแถแแแถแแแแถแแแแธแแแแแแแปแแ แแแแแแแธ [0; แก).
- UnityEngine.Random.Range(). แแแแแพแแแแแแถแแแแถแแแแแแฝแ (แขแแแแแ) แแแแปแแแฝแแแแแแแแแแแถแแแแแแแฑแแแ
- UnityEngine.Random.valueแ แแแแแพแแแแแแถแแแแถแแแแแแฝแ (แขแแแแแ) แแแแปแแ แแแแแแแธ [0; แก).
- 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
ะ ะตะฐะปะธะทะฐัะธั
แแพแแแถแแแทแแธแแแแแแแแแถแแถแ แแแพแแแพแแแแธแแแแแพแแแแแ แแแแแแ แแแแแถแแแแฝแแแถแแธแแฝแแ แแพแแแนแแแแแแแแแแถแแแแปแแแถแ แแแแแกแแ แแแแแฝแแแแแแแ
- แแแแแแถแโแแแแปแโแแถแโแแแแแโแแฝแโแแแแแ [min/max)แ แแนแแแแแผแแแถแแแแแแแแถแแแแแขแแแแแถแแแแแ
- แแทแแธแแถแแแแแแแแแกแแ MF แ แ แผแโแแแแพแแแพแโแแแแแแโแแถแโแแแแแแ แแแแแโแแถโแแผแแ โแแถแแ
- แแแแแแแแแทแแธแแถแแแแแแแแแถแแแแแแแถแแแแแแแถแแแแแแแแแ แแพแแแแธแแถแแแถแแแแแฝแ แแพแแแนแแแแแกแแแแถแแแแแแแแแแแแแแแแแแแถแแ + แแแแแแแทแแธแแถแแแแแแแแแแแแพแแพแแแแธแแแแแพแ 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();
}
}
...
}
}
แแแแแแแแแแแแแบแแ
ะ ะตะทัะปััะฐัั
แแแแถแแขแแแแผแแ แแแปแแพแแกแพแแแแ แขแแแธโแแแโแแฝแโแแโแแถแโแแแแนแโแแปแโแแบโแแถโแขแแแธโแแแโแแฝแโแแโแแแฝแโแแถแ - แแแแปแโแแแแแโแแแแธโแแถแแโแขแแ แแถแโแ แแโแ แถแโแแแโแแทแโแแถแโแแแแแปแโแแธโแแถแโแแแแแแทแแ แแแแปแโแแทแโแแพแโแ แแแปแ โแแแแปแโแแถแโแแถแแโแแแแถแ แแโแแถแ แโแแแโแกแแโแแแแแถแแโแแแแทแแถโแแแโแแ - แแฝแแแโแแถแแโแขแแโแแแแ แถแโแแแแแแโแแแแ แแโแแแแถแ
แแถแแแทแแแบแแแแ
แแถแแแพแแแพแแแแแแแถแแแแ
แแพแแแแแ แแแแธแแทแแธแแถแแแแแแแถแแแแแแถแแแแแถแแแ
แแทแแแถแแแพแแแพแแแถ 3D แ แแแแปแโแแนแโแแปแโแแโแแแแแแโแแ System.Random.Next() แแพแแแแธโแแปแโแฒแแโแแถแโแแแแนแแแถแโแแผแ
แแแแถโแแแแแทแแ
แแฟแแแแแแถแแแแแถแแแแ
แแแแปแแแถแแแแแถแแขแแแธแแถแแ
แแแ
แถแแแแแแแถแแแแ UnityEngine.Random แแทแแแถแแแทแแถแแกแพแแแทแแแแแแแแฝแแฏแแแแ แแถแแแแแแผแแแบแแปแ แฌแขแแแธแแฝแแแถแแแแแถแแแแแแผแแแ
แแแแปแแแแถแแแธแแ แแแปแแแแแฅแกแผแแแแแแพแแแแแถแแแ
แแแแแ: www.habr.com