1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
use strict;
use Test::More;
use Test::Number::Delta within => 1e-14;
BEGIN {
use_ok('Math::Random::MT');
}
# OO interface
# Test the ability to automatically generate a seed, return it, and reproduce
# the same series of random number by specifying this seed manually.
my ($gen, $autoseed,
$num1, $num2, $num3, $num4, $num5, $num6,
$int1, $int2, $int3, $int4, $int5, $int6);
# Generate a series of 6 random numbers using an autogenerated seed
ok $gen = Math::Random::MT->new();
ok $num1 = $gen->rand();
ok $num2 = $gen->rand();
ok $num3 = $gen->rand();
ok $int1 = $gen->irand();
ok $int2 = $gen->irand();
ok $int3 = $gen->irand();
ok $autoseed = $gen->get_seed();
# Generate a series of 6 random numbers the using same seed value but manually specified
ok $gen = Math::Random::MT->new($autoseed);
ok $num4 = $gen->rand();
ok $num5 = $gen->rand();
ok $num6 = $gen->rand();
ok $int4 = $gen->irand();
ok $int5 = $gen->irand();
ok $int6 = $gen->irand();
# Both series of number should be the same
delta_ok $num1, $num4;
delta_ok $num2, $num5;
delta_ok $num3, $num6;
delta_ok $int1, $int4;
delta_ok $int2, $int5;
delta_ok $int3, $int6;
# Generate a series of 6 random numbers the using same seed value but manually specified
ok $gen = Math::Random::MT->new();
delta_ok $gen->set_seed($autoseed), $autoseed;
ok $num4 = $gen->rand();
ok $num5 = $gen->rand();
ok $num6 = $gen->rand();
ok $int4 = $gen->irand();
ok $int5 = $gen->irand();
ok $int6 = $gen->irand();
# Both series of number should be the same
delta_ok $num1, $num4;
delta_ok $num2, $num5;
delta_ok $num3, $num6;
delta_ok $int1, $int4;
delta_ok $int2, $int5;
delta_ok $int3, $int6;
done_testing();
|