Sha256: f9e40eed67905e8e17965bc9c058ff5f0db5f68342a04694e012e496a7b681d8
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
require 'evoasm/test' require 'evoasm/prng' module Evoasm class PRNGTest < Minitest::Test def setup @prng = Evoasm::PRNG.new end def test_same_seed same_prng = Evoasm::PRNG.new 10.times do assert_equal @prng.rand64, same_prng.rand64 end end def test_different_seed other_prng = Evoasm::PRNG.new (11..26).to_a refute_equal @prng.rand64, other_prng.rand64 end def test_rand8 buckets = Array.new(256, 0) sample_size = 100_000 sample_size.times do r = @prng.rand8 refute_operator r, :>, 255 refute_operator r, :<, 0 buckets[r] += 1 end # Not sufficient, # but indicates if something is seriously wrong exp_bucket_size = sample_size / buckets.size mse = 1.0/buckets.size * buckets.inject(0) do |acc, sample| diff = ((sample - exp_bucket_size.to_f)**2 / exp_bucket_size.to_f) p [sample, exp_bucket_size, diff] acc + diff end rmse = Math.sqrt mse assert_operator rmse, :<, 2.0 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
evoasm-0.1.0.pre2 | test/unit/evoasm/prng_test.rb |