Liczby losowe

0

Witam.?
Czy jest jakiś w miarę prosty sposób aby wyświetlać losowe liczby np. wszystkie pięciocyfrowe tak , aby żadna z nich się nie powtórzyła ??
Z góry dziękuję za odpowiedz :)

0

Jest taki sposób :)

0
  1. Wypełniasz tablicę możliwymi do wylosowania liczbami
  2. Mieszasz: http://www.cplusplus.com/reference/algorithm/random_shuffle/
  3. Wybierasz pierwszych kilka.
    Jeżeli potrzebujesz znacznie mniej niż wszystkie, to można zrobić własną metodę szufle która wymiesza tylko pierwszych N elementów.

Jeżeli zaś liczba możliwych jest gigantyczna zaś potrzebujemy tylko kilka liczb to losując kolejną liczbę sprawdzamy czy już jej nie wylosowaliśmy wcześniej, jeżeli tak to powtarzamy losowanie.
http://4programmers.net/Forum/Newbie/175093-losowanie_dziesieciu_liczb_bez_powtorzen?p=1092441#id1092441

0

Możesz tez

  1. Losujesz odpowiednią liczbe
  2. Sprawdzasz w std::unordered_mapstd::unordered_set czy została wylosowana
    2.1. Jeśli nie, wstawiasz ja do setu (seta?) i wypisujesz.
    Istotne jest to, że zamortyzowany czas wykonania kroku 2. to O(1), więc nas to nie boli.
1
pingwindyktator napisał(a):
  1. Sprawdzasz w std::unordered_map czy została wylosowana
    WTF? Czemu nie std::unordered_set czym ma być druga wartość?
pingwindyktator napisał(a):

Istotne jest to, że zamortyzowany czas wykonania kroku 2. to O(1)

  • warto podkreślić że tylko w przypadku std::unordered_set ewentualnie std::unordered_map mimo że to be zsensu.
0

Fakt, unordered_set byłby lepszy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1