Autor Wątek: Problem z losowanie tych samych znaków C++  (Przeczytany 368 razy)

Offline emperator

  • Użytkownik

# Maj 21, 2020, 23:56:35
Witam mam taki oto program, którego celem jest wygenerowanie unikalnego kodu dla użytkownika składającego się z 2 wylosowanych znaków ze zmiennych imię, nazwisko, data urodzenia. i mam problem, ponieważ gdy losuje wyskakują mi po dwa takie same znaki z każdej zmiennej.

Docelowo z danych
imie: Dawid
nazwisko: Mrasny
data urodzenie 11.12.2000

Powinienem uzyskać miej więcej taki kod adrs1.
A otrzymuje aarr11
Link do kodu
https://pastebin.com/7LWLD9rE
 

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline stapislaw

  • Użytkownik

  • +1
# Maj 22, 2020, 01:34:52
Problemem jest to, że używasz funkcji srand(time(NULL)); w każdej iteracji pętli. Wywołanie srand tylko raz, na początku funkcji main() rozwiązuje problem.

Offline bartekm

  • Użytkownik
    • Wordpress Blog

  • +2
# Maj 22, 2020, 11:23:39
Skoro używasz C++ to lepiej używać funkcji z nagłówka <random>. Np:

// początkowe ziarno
std::random_device seed;

// silnik liczb pseudolosowych
// generuje liczby za pomocą algorytmu Mersenne Twister

std::mt19937 mt(seed());

// dystrybucja liczb pseudolosowych rzeczywistych
// z jednorodnym prawdopodobieństwem
// liczby będą się losować z zakresu od 0 do 1

std::uniform_real_distribution<float> dist(0.0f, 1.0f);

// generujemy liczbę pseudolową
los = dist(mt);