Hmmm... Nie jest to najszybszy, ale zapewne zdziała coś.
Zaleznie od tego czy liczby mogą się powtarzać czy nie będzie to nieco inaczej wyglądało przy operowaniu elementami.
1. Bierzemy liczbę z gotowych elementów i wstawiamy go do nowej tablicy.
2. Jeśli nie może się powtarzać to usuwamy go z tablicy gotowych.
3. Sumujemy nową tablicę i robimy modulo 1000.
4. Jeśli wyjdzie 0 -> kończymy i możemy sobie te liczby wyświetlić.
5. Sprawdzamy czy tablica gotowców ma choć jeden element.
6. Jeśli nie to resetujemy obie tablice i "zaczynamy od nowa"
7. Jeśli tak to idziemy do kroku 1
EDIT: Byłbym zapomniał dodać... Losowanie (i usuwanie jeśli tylko raz można użyć danej liczby) z tablic oraz dodawanie do drugiem można rozwiązać na wiele sposobów i tu już można popuścić fantazji nieco. Jeśli każdej można użyć tylko raz to można użyć choćby array_pop, array_push i array_shuffle

Wariacji na temat losowania z tablicy może być tyle ilu programistów zechce do tego siąść