Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

random brojevi...

[es] :: C/C++ programiranje :: random brojevi...

[ Pregleda: 2454 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

01011011

Član broj: 561
Poruke: 2341
*.in.us.prserv.net



+2 Profil

icon random brojevi...26.10.2002. u 08:46 - pre 261 meseci
Evo ovako planiram da nesto napravim i pisao sam nesto neki code ali nisam uspio nist anapraviti :)

Hocu da napravim da se random ispisuju imena, ili brojevi recimo od 0-6. E sad mogu ja to napraviti, ali sa brojevima koji su randomised numbers, ali nemogu sa 1,2,3,4,5,6. E sad kad uradim rand(), randomise brojeve, ali ima mogucnost da se npr broj 4 ili 3 ili bilo koji pojavi vise puta odjednom, ako kontate sta mislim. E sad nasao sam funkciju Shuffle, ali necu da radim sa funkcijom, nego me interesuje jel ima laki nacin da se napise code, koji ce ovo raditi ali da nije obilan jer planiram da radim ovo sa oko 200 brojeva ili imena sto ja kontam, pa da se random-izuju....
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.dial.InfoSky.Net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: random brojevi...26.10.2002. u 14:40 - pre 261 meseci
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.
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
*.in.us.prserv.net



+2 Profil

icon Re: random brojevi...26.10.2002. u 21:23 - pre 261 meseci
ja sam pokusao da stavim

Code:

const int arraySize = 6;

int a[ arraySize ] = { 1, 2 , 3 ,4 ,5 ,6 };


i onda

Code:


for(int i = 0;. i < arraySize; i++)
{
     cout << setw(20) << rand()
// Mislim ovako ensto, e sad skontao sam da ne mogu da uradim 
// rand(a[ i ]) tako da sam probao da kreiram funkciju , ali nisam uspio ni tako.??

}

 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.dial.InfoSky.Net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: random brojevi...27.10.2002. u 00:26 - pre 261 meseci
Probaj sa

Code:

int a[arraySize]={0, 0, 0, 0, 0, 0, ... };
int t;
for(int i = 0; i < arraySize; i++)
{
     while (a[t=rand(arraySize)]) ;
     a[t]=1;
     cout << t << rand()
}


Nisam probao, ali verujem da bi ovako nešto trebalo da radi.
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
*.in.us.prserv.net



+2 Profil

icon Re: random brojevi...27.10.2002. u 07:24 - pre 261 meseci
hvala
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.dial.InfoSky.Net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: random brojevi...27.10.2002. u 11:02 - pre 261 meseci
E da, pogrešno sam upotrebio rand(): umesto rand(arraySize) staviš rand()%arraySize (ili neki pravilniji način kao što je arraySize*rand()/RAND_MAX, ali pazi da ti ne izađe iz okvira broja sa kojim radiš, ili koristi float, pa float na int).

I ne zaboravi da koristiš neki dovoljno ,,entropični'' :) izvor za srand(), inače ništa od slučajnog izbora brojeva.

Primerak koji radi kod mene je
Code:
#include <stdlib.h>
#include <iostream.h>
#define arraySize (6)

int main(void) {
  int a[arraySize]={0, 0, 0, 0, 0, 0};
  int t;
  for(int i = 0; i < arraySize; i++)
  {
      while (a[t=rand()%arraySize]) ;
      a[t]=1;
      cout << t << endl;
  }
  return 0;
}




Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

[es] :: C/C++ programiranje :: random brojevi...

[ Pregleda: 2454 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.