Mada je pitanje upućeno random-u, reći ću i ja ponešto.
Najbolje ti je da napraviš ,,skup'' (neki apstraktan tip podataka) i da iz njega biraš proizvoljne elemente, zatim ih izbacuješ i biraš sledeći (pa samim tim izbačeni ne može doći u obzir ponovo), i tako dok ne isprazniš skup.
Za manje skupove (a i za veće kada radiš sa celim brojevima), možeš koristiti običan niz
Code:
int skup[BROJČLANOVA/(sizeof(int)*8))
i onda postavljati odgovarajući bit na 1 ili 0, u zavisnosti da li si već neki član upotrebio (možeš pomoću #define napraviti par jednostavnih makroa za to).
Neka imaš ovakav ,,skup'', i odgovarajući makro ,,UBAČEN'' i ,,POSTAVI'', onda bi ovo mogao uraditi kao
Code:
br_ubačenih = 0
dok (br_ubačenih != BROJČLANOVA) {
dok (UBAČEN(a=rand_između(1,BROJČLANOVA))) { }
POSTAVI(a)
ispiši(a)
br_ubačenih++
}
Ovo ti je naravno pseudo-srpski-C jezik, a na tebi je da ono najlepše sam izvedeš.
Pored toga, ovo je samo jedno od mogućih rešenja, a zavisno od ostalih osobina programa treba izabrati pravo.
Toliko
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.