Cześć! Prosiłbym o pomoc, bo robię program, który będzie czymś w rodzaju symulatora Lotto, jednkak mam problem, bo część kodu odpowiedzialna za to, aby liczby były różne nie działa, zrobiłem to tak że zrobiłem pętle for z niewiadomą g i wewnętrzną for z z, w środku umieściłem instrukcję if, która, ma warunek (liczby[g]==tw[z]), a w środku ma jeszcze pętle do while i funkcje rand, dopiero zaczynam, więc moje pytanie to, czy takie zagnieżdżanie i ustawianie w instrukcji if zmiennej z pętli ma prawo działać? Czy macie jakiś pomysł jak zrobić tak, żeby liczby się nie powtarzały, chodzi mi raczej o sposób, a nie o sam kod?
0
0
Prosić o ocenę programu na podstawie opisu, a nie faktycznego kodu to trochę tak, jakby prosić o stwierdzenie, czy dziewczyna jest ładna, nie pokazując zdjęcia, a jedynie ją opisując… Ja się tego nie podejmę.
Ale jeśli pytasz o losowy wybór k
niepowtarzających się elementów z n
możliwych — to najmniej pracochłonne będzie wzięcie sobie gotowca z biblioteki standardowej, konkretnie std::random_shuffle.
0
for(int g=0;g<6;g++)
{
for(int y=0;y<6;y++)
{
xc=liczba[g]-liczba[y];
if(xc==0)
{
do
{
liczba[y]=rand();
mm=(liczba[g]%49)-(liczba[y]%49);
}
while(mm==0);
}
}
}
0
Czy macie jakiś pomysł jak zrobić tak, żeby liczby się nie powtarzały, chodzi mi raczej o sposób, a nie o sam kod?`std::uniform_int_distribution<` - do losowania liczb. Przykład użycia `std::set<` - std::set do trzymania unikalnych i posortowanych wylosowanych wartości.
#include <iostream>
#include <chrono>
#include <random>
#include <set>
#include <algorithm>
int main()
{
std::set<unsigned> numbers;
auto seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine dre(seed);
std::uniform_int_distribution<unsigned> dist(1, 49);
while (numbers.size() < 6) {
numbers.insert(dist(dre));
}
for (auto const& el : numbers) {
std::cout << el << ' ';
}
}