Tests of random functions, that is to say functions specified to act randomly, must be STATISTICAL tests. Run the function a large number of times ($N), and check that the basic and not-so-basic statistics match the model you require of your function under test.
Pseudo code for an inadequate number of tests of an imaginary model, assumed not unlike a bell-curve - your mileage WILL vary -
$fut= \&FunctionUnderTest; my @X= map { $fut->() } 1..$N;
use Acme::Statistics; # Fantasy package that provides
-- Bill
# I had a sig when sigs were cool
use Sig;
Interesting. I was just talking to a coworker about that. It's been years since statistics classes and I was struggling to remember the formulae involved in calculating what I was interested in. I wasn't thinking of a distribution under a bell curve so much as I was thinking "if X might not be correct, how many times do I need to calculate X to ensure the odds of it being incorrect are acceptably minimized?" More inportantly, I can't have randomly failing tests, but I'm quite happy to have a test which
Fit the tool to the job (Score:2)
Random functions require random tests, of course.
Just like documentation: if it was hard to write, it should be hard to read.
Writing tests for random functions (Score:1)
Pseudo code for an inadequate number of tests of an imaginary model, assumed not unlike a bell-curve - your mileage WILL vary -
Bill
# I had a sig when sigs were cool
use Sig;
Re: (Score:2)
Interesting. I was just talking to a coworker about that. It's been years since statistics classes and I was struggling to remember the formulae involved in calculating what I was interested in. I wasn't thinking of a distribution under a bell curve so much as I was thinking "if X might not be correct, how many times do I need to calculate X to ensure the odds of it being incorrect are acceptably minimized?" More inportantly, I can't have randomly failing tests, but I'm quite happy to have a test which
Not random (Score:2)