File Coverage

blib/lib/Data/Gimei/Random.pm
Criterion Covered Total %
statement 27 27 100.0
branch 2 2 100.0
condition n/a
subroutine 7 7 100.0
pod 0 3 0.0
total 36 39 92.3


line stmt bran cond sub pod time code
1             package Data::Gimei::Random;
2              
3 6     6   5680 use warnings;
  6         14  
  6         155  
4 6     6   50 use v5.22;
  6         16  
5              
6 6     6   2157 use Math::Random;
  6         24087  
  6         410  
7              
8 6         28 use Class::Tiny qw(
9             seed
10 6     6   409 );
  6         2361  
11              
12             sub set_seed {
13 12     12 0 535 my ( $self, $seed_num ) = @_;
14 12         49 random_set_seed_from_phrase( 13 * ( $seed_num % 2**26 ) );
15 12         202 my @seed = random_get_seed();
16              
17 12         251 $self->seed( \@seed );
18             }
19              
20             sub next_int {
21 57     57 0 278 my ( $self, $size ) = @_;
22              
23 57 100       877 if ( $self->seed ) {
24 54         217 random_set_seed( @{ $self->seed } );
  54         687  
25             } else {
26              
27             # to change result next_sample in each seconds.
28 3         35 $self->set_seed(time);
29             }
30              
31 57         1002 my $ret = random_uniform_integer( 1, 0, $size );
32              
33 57         657 my @seed = random_get_seed();
34 57         920 $self->seed( \@seed );
35              
36 57         233 return $ret;
37             }
38              
39             sub next_sample {
40 52     52 0 92 my ( $self, $array_ref ) = @_;
41              
42 52         97 my $i = $self->next_int($#$array_ref);
43 52         190 return $array_ref->[$i];
44             }
45              
46             1;