Reproducible randomness 

sub populate_cell_data {
    my $self = shift;
    my %data;
    foreach my $r (@rows) {
        foreach my $c (@cols) {
            $data{"$c$r"} = $self->next_random_val();
        }
    }
    $self->cell_data(\%data);
}