Example #1
0
        public void Average()
        {
            const UInt32 numerator   = 3;
            const UInt32 denominator = 10;
            const Double p           = (Double)numerator / denominator;
            const UInt64 sampleCount = 100_000;

            var rng1      = Mt1993764.Create(5489);
            var rng2      = Mt1993764.Create(5489);
            var ratioDist = Bernoulli.FromRatio(numerator, denominator);
            var pDist     = Bernoulli.FromP(p);

            UInt64 sum = 0;

            for (UInt64 i = 0; i < sampleCount; i++)
            {
                Assert.True(ratioDist.TrySample(rng1, out Boolean result1));
                Assert.True(pDist.TrySample(rng2, out Boolean result2));
                Assert.Equal(result1, result2);

                if (result1)
                {
                    sum++;
                }
            }

            Assert.True(Statistics.WithinConfidenceBernoulli(sum, p, sampleCount));
        }
Example #2
0
        public RngUInt32()
        {
            _chaCha8         = ChaCha.GetChaCha8Factory().Create(new ChaCha.Seed());
            _chaCha12        = ChaCha.GetChaCha12Factory().Create(new ChaCha.Seed());
            _chaCha20        = ChaCha.GetChaCha20Factory().Create(new ChaCha.Seed());
            _pcg32           = Rngs.Pcg32.Create(0, 0);
            _mt1993764       = Rngs.Mt1993764.Create(0);
            _xorShift        = Rngs.XorShift.Create(1, 1, 1, 1);
            _systemCryptoRng = Rngs.SystemCryptoRng.Create();
#pragma warning disable CS0618
            _cryptoServiceProvider = Rngs.CryptoServiceProvider.Create();
#pragma warning restore CS0618
            _random = new Random(42);
        }
Example #3
0
        public void TrivialRatios()
        {
            Assert.Throws <ArgumentOutOfRangeException>(() => Bernoulli.FromRatio(11, 10));
            var alwaysTrue  = Bernoulli.FromRatio(10, 10);
            var alwaysFalse = Bernoulli.FromRatio(0, 10);
            var rng         = Mt1993764.Create(5489);

            for (Int32 i = 0; i < 10; i++)
            {
                Assert.True(alwaysTrue.TrySample(rng, out Boolean definitelyTrue));
                Assert.True(alwaysFalse.TrySample(rng, out Boolean definitelyFalse));
                Assert.True(definitelyTrue);
                Assert.False(definitelyFalse);
            }
        }