losowanie bez powtorzen w c++
amator: czy moglby mi ktos pomoc z napisaniem programu, ktory losuje liczby bez powtorzen?
napisalem narazie taki kod :
#include <iostream>
#include <windows.h>
#include <time.h>
#include <conio.h>
using namespace std;
int main(){
cout << "\t\t\t\t ***LOTTO***\n\n\n";
int wylosowanaliczba[6];
srand(time(NULL));
cout << "Nacisnij dowolny klawisz aby rozpoczac";
getch();
system("cls");
cout << "LOSOWANIE ROZPOCZETE!: \n";
for(int i=0;i<=5;i++)
{
wylosowanaliczba[i] = rand()%49+1;
if(wylosowanaliczba[i])
Sleep(600);
cout << wylosowanaliczba[i] << "\t";
}
}
12 cze 00:28
jc: Kolejno losujesz 1 z 49, 1 z 48, 1 z47, 1 z 46, 1 z 45 , 1 z 44
Jeśli wysowana liczba jest wśród wcześniej wylosowanych bierzesz o jeden większą
a jeśli znów jest, to o dwa większą, ...
−−−−
Prostsze (choć równoważne rozwiązanie) rozwiązanie.
int tab[49];
for(int k = 0; k<49; k++) tab[k]=k+1;
for(int i = 0; i < 6; i++) {
c = rand()% (49−i);
wylosowana[i] = tab[c];
tab[c] = tab[48−i];
}
12 cze 07:56