pomoc w zrozumieniu losowania bez powtórzeń

1

Witam.
Uczę się c++ i obecnie stanąłem przy programie do losowanie liczb bez powtórzeń.
Raz, że nie wiem jak to zrobić, a dwa najważniejsze patrząc na kody które inni piszą nie rozumiem o co w ich kodzie chodzi. Jak to działa. A bez tego nigdy nie napiszę takiego programu samemu.
Mógłby ktoś ewentualnie zamieścić jakiś jak najłatwiejszy kod do takiego programu, i opisać linijka po linijce co się dzieje w danej linijce? Przy takich programach się gubię, i nie wiem jak przez to przebrnąć.
Jakby był ktoś taki dobry i pomógł mi, byłbym bardzo wdzięczny. Nie potrzebuje kodu do żadnej pracy, więc to nie jest lenistwo. Nie wiem jak to ugryźć.

0

możesz to napisać na takiej zasadzie, że masz koszyk z kulkami ponumerowanymi od a do b i wyjmujesz z niego n piłek z losowo wybranego miejsca.

0

Dobra. W końcu się udało mi napisać. trochę się pomordowałem z tym.
Użyłem pętli for, oraz do while.
Jakby co może komuś przyda się ten kod:

int main()
{
	srand(time(NULL));
int zakres=49;
int poczatek=1;
int ilosc=6;
int tablica[ilosc];
bool powtorzenie;
do{
for(int i=0; i<ilosc; i++){
	tablica[i]=rand()%zakres+poczatek;
	for(int j=0; j<i; j++){
		if(tablica[j]==tablica[i]){
			powtorzenie=true;
		}
	}
	}}
	while(powtorzenie);
	for(int i=0; i<ilosc; i++){
		cout<<tablica[i]<<endl;
	}
return 0;
}
0

Zamiast się mordować wystarczyło pomyśleć:

int main()
  {
   srand(time(0));
   const int poczatek=1,zakres=49,ilosc=6;
   int tablica[zakres];
   for(int i=0;i<zakres;++i) tablica[i]=poczatek+i;
   for(int i=zakres;i>1;--i) swap(tablica[i-1],tablica[rand()%i]);
   for(int i=0;i<ilosc;++i) cout<<tablica[i]<<endl;
   return 0;
  }
0

Po pierwsze jakbyś spojrzał na mój kod, to w programie losujemy 6 liczb a nie tak jak u ciebie 49 w tablicy.
Po drugie od czego jest ten swap?
Grunt, że udało mi się zrobić w końcu program z losowaniem bez powtórzeń. To się liczy

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