Я согласен с Адамом Розенфилдом. Для ситуации, о которой вы говорите, единственное, что вы можете с пользой проверить - это распределение по диапазону.
Обычно я сталкиваюсь с ситуацией, когда я генерирую псевдослучайные числа с помощью PRNG моего любимого языка, а затем манипулирую ими в желаемом диапазоне. Чтобы проверить, повлияли ли мои манипуляции на распределение, я генерирую кучу чисел, манипулирую ими, а затем проверяю распределение результатов.
Чтобы получить хороший тест, вы должны сгенерировать как минимум на пару порядков больше чисел, чем поддерживает ваш диапазон. Чем больше значений вы используете, тем лучше тест. Очевидно, что если у вас действительно большой диапазон, это не сработает, так как вам придется генерировать слишком много чисел. Но в вашей ситуации все должно работать нормально.
Вот пример на Perl, который иллюстрирует, что я имею в виду:
for (my $i=0; $i<=100000; $i++) {
my $r = rand; # Get the random number
$r = int($r * 1000); # Move it into the desired range
$dist{$r} ++; # Count the occurrences of each number
}
print "Min occurrences: ", (sort { $a <=> $b } values %dist)[1], "\n";
print "Max occurrences: ", (sort { $b <=> $a } values %dist)[1], "\n";
Если разброс между минимальными и максимальными вхождениями мал, то ваше распределение хорошее. Если он широкий, значит, ваш дистрибутив может быть плохим. Вы также можете использовать этот подход, чтобы проверить, охватывался ли ваш диапазон и были ли пропущены какие-либо значения.
Опять же, чем больше чисел вы генерируете, тем правильнее результаты. Я имею тенденцию начинать с малого и работать над тем, что моя машина будет обрабатывать в течение разумного периода времени, например пять минут.