Co powiesz na taki pomysł:
Liczby przechowujesz w wektorze std::vector<int> liczby
Algorytm losowania wygląda następująco:
0. niech len=liczby.size()
1. wylosuj liczbę indexA z zakresu <0, len-1>
2. wylosuj liczbę indexB z zakresu <0, len-1> różną od indexA
3. niech A=liczby[indexA], B=liczby[indexB]
4. jeżeli A*B > 100000 wróć do kroku 1 (ewentualnie dodaj limit losowań)
5. zamień miejscami liczby[indexA] z liczby[len-1]
6. zamień miejscami liczby[indexB] z liczby[len-2]
7. skróć wektor liczby o 2
8. zwróć A i B