/** * Sorter test method. * * @param object ISorter $sorter The sorter to test. * @param integer $n The length of array to test. * @param integer $seed A seed for the random number generator. * @param integer $m If given, data values are restricted to [0,m-1]. * (Optional). */ public static function test(ISorter $sorter, $n, $seed, $m = 0) { //printf("AbstractSorter test program.\n"); RandomNumberGenerator::setSeed($seed); $data = new BasicArray($n); for ($i = 0; $i < $n; ++$i) { $datum = intval(RandomNumberGenerator::next() * Limits::MAXINT); if ($m != 0) { $datum = $datum % $m; } $data[$i] = $datum; } $timer = new Timer(); $timer->start(); $sorter->sort($data); $timer->stop(); $datum = sprintf("%s %d %d %f", $sorter->getClass()->getName(), $n, $seed, $timer->getElapsedTime()); fprintf(STDOUT, "%s\n", $datum); fprintf(STDERR, "%s\n", $datum); for ($i = 1; $i < $n; ++$i) { if ($data[$i] < $data[$i - 1]) { printf("FAILED\n"); break; } } }
/** * Main program. * * @param array $args Command-line arguments. * @return integer Zero on success; non-zero on failure. */ public static function main($args) { printf("RandomNumberGenerator main program.\n"); $status = 0; RandomNumberGenerator::setSeed(1); for ($i = 0; $i < 10; ++$i) { printf("%.15f\n", RandomNumberGenerator::next()); } return $status; }