Cześć,
Dopiero co zacząłem swoją przygodę z programowaniem w C++ i postanowiłem zrobić program, który losuje 7 liczb z przedziału od [1,49]. Wszystko dobrze zrobilem za pomocą funkcji rand ale losuje mi np dwie takie same liczby. Bardzo bym prosił aby ktos mi wytłumaczył w postaci pseudokodu jak to można zrobić aby nie losowało mi tych samych liczb.
0
3
W takim przypadku najprościej:
- Utworzyć kontener z zadanymi wartościami
- Potasować je
- Wybrać n pierwszych.
Dla małych zbiorów jest to świetne rozwiązanie, dla większych już nie. 49 elementów to mały zbiór.
int main()
{
vector<int> vals(49);
iota(vals.begin(), vals.end(), 1);
DBG_CONT(vals);
mt19937 gen{random_device{}()};
shuffle(vals.begin(), vals.end(), gen);
DBG_CONT(vals);
vals.resize(6);
DBG_CONT(vals);
}
0
A co to takiego ten kontener? Może to jeszcze za trudne dla mnie?
0
Ogólniejsze pojęcie na tablice, listy i inne (ech) kontenery. vector
to np. tablica o wielkości ustalanej podczas działania programu - co zresztą można wywnioskować z mojego kodu wyżej.
0
O kontenerach w C++ i nie tylko: http://www.cplusplus.com/reference/stl/ Ogólnie polecam całą stronę.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.