Заполнить массив из 1000 элементов пачками [0...9], тогда числа будут присутствовать в (примерно) равной пропорции, и перемешать получившийся массив по какому-то алгоритму с параметром, имитирующему случайность перемешивания. Перемешивая массив просто случайным образом не добиться п.1. За алгоритм сейчас не скажу, думать надо

.
Например, можно в пачках [0...9] перед заполнением задавать определенный порядок чисел (таких вариантов будет 10! = 3628800, если я ничего не путаю), а заполнять и перемешивать большой массив уже каким-то статическим алгоритмом (без параметра). Можно попробовать за основу взять битмап дату 1х1000 и что-то мутить с пиксельной информацией, сид как-то привязать к цвету...