コード例 #1
0
        public void TestForSaltReuse()
        {
            var seen = new HashSet <int>();
            var rng  = new StatelessRng(kSeed);

            StatelessRng.SaltUsed = (salt) => {
                Assert.IsTrue(seen.Add(salt), "Salt {0} is unused", salt);
            };
            try {
                rng.OnUnitCircle(0); seen.Clear();
                rng.InUnitCircle(0); seen.Clear();
                rng.OnUnitSphere(0); seen.Clear();
                rng.InUnitSphere(0); seen.Clear();
                rng.Rotation(0); seen.Clear();
            } finally {
                StatelessRng.SaltUsed = null;
            }
        }
コード例 #2
0
        public void TestUniformity_InUnitSphere()
        {
            var rng = new StatelessRng(kSeed);

            Vector3[] vals = Gen(i => rng.InUnitSphere(i)).ToArray();

            Func <Vector3, Vector3> ThetaRrrZr = v3 => {
                float r = v3.magnitude;
                if (r == 0)
                {
                    return(Vector3.zero);
                }
                float angle01 = ToAngle01(Mathf.Atan2(v3.y, v3.x));
                return(new Vector3(angle01, r * r * r, ((v3.z / r) + 1f) / 2f));
            };

            S.CheckUniformity(new[] { "theta", "rrr", "z/r" }, vals.Select(ThetaRrrZr));
        }