Próbuję wypełnić tablicę z 20 ints liczbami od 1-20 w losowej kolejności. oto mój kod:wypełnianie tablicy losową liczbą
int lookup[20]={0};
int array[20]={0};
srand(time(NULL));
for(int i=0;i<20;++i){
bool done=false;
while(!done){
int n=rand()%20;
if(lookup[n]==0){
array[i]=n;
lookup[n]=1;
done=true;
}
}
}
Utworzyłem tablicę przeglądową, aby sprawdzić, czy liczba losowa nie jest jeszcze wybrany i przechowywać je w tablicy. Jak widzisz, stworzyłem 2 pętle, jedną do przechodzenia przez tablicę i chwilę do wyboru losowej liczby. W każdej iteracji pętli liczba może się ponownie pojawić i spowodować kolejną pętlę while. Czy jest szybszy sposób to zrobić?
zastosować random-number-generator tag –
Patrz także: http://stackoverflow.com/questions/1218155/random-number-but-dont-repeat, http://stackoverflow.com/questions/1816534/random -playlist-algorithm, http://stackoverflow.com/questions/417831/what-is-the-best-way-of-randomly-re-arranging-a-list-of-items-in-c, http://stackoverflow.com/questions/813935/randomizing-elements-in-an-array – outis