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

Generisanje slucajnog broja od 1 do 39...

[es] :: C programiranje :: Generisanje slucajnog broja od 1 do 39...

[ Pregleda: 2307 | Odgovora: 16 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 84
195.252.89.*



Profil

icon Generisanje slucajnog broja od 1 do 39...21.02.2006. u 22:34

Hocu da napravim neki smesan program za LOTO,pa zelim da genesrisem slucajni broj od 1 do 39,evo mog nacina ,ali mislim da ce to biti problem za kompjuter jer RAND_MAX ide do 32000,pa ce mu mozda trebati mnogo vremena....

funkcija je:

int rand39*(){
int broj;

while(true){ broj=rand();
if (broj!=0&&broj<=39)return broj;
}
}



Nisam cak ni siguran da ce ovo da odradi posao,ali ako neko zna bolje resenje ,neka odgovori....
Hvala unapred......

A vi,kako 'te?
21.02.2006. u 22:34 

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 880
*.plus.com.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 00:37
rand() % 39

bi trebalo da reshi probleme
22.02.2006. u 00:37 

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 177
212.200.124.*



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 00:53
Pokusaj sa

int Loto39()
{
return 1 + ( rand() % 39);
}

Citat:
NastyBoy: rand() % 39

bi trebalo da reshi probleme

Nisam siguran da je vbvlada nasao vezu izmedju % i mod posto mi deluje kao vb programer, bar sudeci po imenu koje koristi. Pozdrav
22.02.2006. u 00:53 

zokio
Balkan

Član broj: 27826
Poruke: 43
*.scst.hr.

Sajt: student.oss.unist.hr/~zs9..


Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 01:56
Ovako nemoj da pises "1 + ( rand() % 39);"
Imao sam slican zadatak na vjezbama i profesor mi nije htio priznati zadatak jer kako on kaze "neki slucajan broj +1 vise nije slucajan tj, random broj",
** mada bi se o tome dalo raspraviti **

pa ako ces mene da poslusas bolje to samo promijeni na ovako;

Code:

int lotornd(void)
{
return(rand()%40);
}


vracat ce ti brojeve od 0-39 bez "plus 1" e to bi sada valjda bio slucajan broj !
Poslije spavanja treba odmorit ! ! !
22.02.2006. u 01:56 

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 84
195.252.89.*



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 09:07
OK,probao sam return(rand()%40),kao i onaj moj nacin,uopste nije spor,ne oseti se,ali sada imam drugi problem:pri svakom pozivanju programa,on mi vraca isti niz tih "slucajnih" brojeva!!!
Evo napravio sam mali program za testiranje pa probajte kod vas...
Napravite par nizova,pa izadjite iz programa,pa opet pokrenite i uvek se dobije niz 28,28,21,6......(na pocetku samo unesite broj veci od nule,a za izlazak broj<=0)

#include<iostream>
using namespace std;
void main(){
int opet;
while(true){
cin>>opet;
if(opet<=0)break;
int broj;
for(int i=0;i<10;i++)
while(true){
broj=rand();
if(broj!=0&&broj<=39){cout<<broj<<' ';break;}

}

}
cout<<'\n';
}

A vi,kako 'te?
22.02.2006. u 09:07 

mligor

Član broj: 11999
Poruke: 36
*.de.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 09:27
samo dodaj pre svega toga

srand (time(NULL));
22.02.2006. u 09:27 

tosa

Član broj: 1811
Poruke: 1264
*.ubisoft.com.cn.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 09:39
@Zokio
Profesora bi trebalo da promenis...

Soylent green: over 6 billion served!
22.02.2006. u 09:39 

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 84
195.252.89.*



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 09:50
srand (time(NULL));_____koliko sam shvatio,tako cu ,kako se vreme menja,uvek imati drugaciju pocetnu vrednost,pa ce brojevi biti drugaciji...
Ali mene cudi kako je funkcija rand() tako cudno odradjena,pa bolje bi bilo da ja sam napravim neku moju funkciju u kojoj bih stavio brdo mnozenja,deljenja,itd ,pa sta ispadne, i eto to je kao slucajni broj...
A vi,kako 'te?
22.02.2006. u 09:50 

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 481
*.lstm.uni-erlangen.de.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 11:01
http://www.elitesecurity.org/tema/96083
22.02.2006. u 11:01 

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 177
*.tehnicom.net.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 15:26
Citat:
vbvlada: srand (time(NULL));_____koliko sam shvatio,tako cu ,kako se vreme menja,uvek imati drugaciju pocetnu vrednost,pa ce brojevi biti drugaciji...
Ali mene cudi kako je funkcija rand() tako cudno odradjena,pa bolje bi bilo da ja sam napravim neku moju funkciju u kojoj bih stavio brdo mnozenja,deljenja,itd ,pa sta ispadne, i eto to je kao slucajni broj...


Pre nego sto se upustis u takvu avanturu ne bi bilo lose da pogledas knjigu
Donalda Knutha -- The Art of Computer Programming -- mislim da je u drugom delu cela teorija o tome kako rand radi. Nije pitanje da li je sekvenca uvek ista ili ne nego da li funkcija ima dobru (citaj: uniformnu) raspodelu, a vec si video kako ces da promenis sekvencu.

22.02.2006. u 15:26 

NrmMyth
Split, Kaštela

Član broj: 63456
Poruke: 839
*.cmu.carnet.hr.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 17:32
Citat:
tosa: @Zokio
Profesora bi trebalo da promenis...

Da. Isto kao da kaze profesor iz matematike da 1 + "beskonacno" nije vise beskonacno!?!

Koristi rand() , ne vidim sto ti je konfuzno tu?
22.02.2006. u 17:32 

vbvlada
Petrović Vladimir
Beograd

Član broj: 59233
Poruke: 84
195.252.89.*



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...22.02.2006. u 19:10
Wow,nisam znao da iza ovog problema stoji tolika nauka(pogledao sam link za onu drugu temu),ok,pogledacu tu knjigu,ali neka bude da sam resio ovaj problem sa RAND() i jos nekim modifikacijama...
Pa i moj profesor dodaje 1,a ja mislim da to moze da se tretira kao slucajan broj jer je ipak ?+1=?

A vi,kako 'te?
22.02.2006. u 19:10 

zokio
Balkan

Član broj: 27826
Poruke: 43
*.scst.hr.

Sajt: student.oss.unist.hr/~zs9..


Profil

icon Re: Generisanje slucajnog broja od 1 do 39...23.02.2006. u 01:42
Citat:
NrmMyth: Da. Isto kao da kaze profesor iz matematike da 1 + "beskonacno" nije vise beskonacno!?!

Koristi rand() , ne vidim sto ti je konfuzno tu?


Ma moji momci i 'sam sam napisao da bi se o tome dalo diskutirati, znaci ne podrzavam ja njega u toj izjavi mada se ispricavam, to nije rekao bas sam profesor nego asistent koji drzi vjezbe i pismeni, ali u svakom slucaju ste u pravu i ja drzim da je 'slucjano'+1 opet nesto slucajno, ali nevidim razloga da se ne stavi broj vise i opet problem rijesen bez zbrajanja, pa sigurno nigdje u zadatku nepise "zabranjeno dijeljenje po modulu sa brojem iznad 39"

eto, no fear
Poslije spavanja treba odmorit ! ! !
23.02.2006. u 01:42 

rumpl

Član broj: 54959
Poruke: 156
*.net81-66-198.noos.fr.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...23.02.2006. u 09:57
Evo sta kaze man rand-a:
Citat:
In Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University
Press, 1992 (2nd ed., p. 277)), the following comments are made:
"If you want to generate a random integer between 1 and 10, you should always do it by using high-order bits, as in

j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));

and never by anything resembling

j = 1 + (rand() % 10);

(which uses lower-order bits)."


I da, rand je cudna funkcija, zove se rand, ali to je u stvari samo pseudo-random generator, koji koristi razne variable iz tvog sistema da bi ti dao jedan lep random broj.

Ako ti nije dovoljno "random", pokusaj sta si rekao, stavi puno deljenja i mnozenja, pa mi reci kad si uspeo da napravis neku random funkciju. Cela jedna grana matematike se bavi time, a ti hoces da sklopis nesto nabrzaka...

[Ovu poruku je menjao rumpl dana 23.02.2006. u 11:04 GMT+1]
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
23.02.2006. u 09:57 

mladen3006

Član broj: 122566
Poruke: 4
*.wireless.org.yu.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...10.12.2006. u 08:57
srand (time(NULL)); mislim da je to najtacnije sto se tice tog random broja... pocinje sa drugim i zavrsava se sa drugim... i tako stalno...
10.12.2006. u 08:57 

Tiristor
Skola/obrazovanje
Straza

Član broj: 102849
Poruke: 182
*.beobug.com.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...10.12.2006. u 20:31
evo tek sada sam video ovu temu. Ja sam radio takav program prosle godine. Evo njegov kod:

Code:

#include <stdio.h>
#include <stdlib.h>
main ()
{
int a[7],i,j,n,c;
for ( ; ; )
 {
 printf ("\n Unesite broj kombinacija: ");
 scanf ("%d",&n);
 if (n<=0)
  {
  printf ("\nUneli ste pogresan broj!");
  break;
  }
 for (i=1;i<=n;i++)
  {
  printf ("\n\n%d. kombinacija je: ",i);
   for (j=0;j<7;j++)
    a[j]=rand()/((double)RAND_MAX+1)*40;
    for (j=0;j<=6;j++)
     {
     for (c=j+1;c<7;c++)
      if (a[j]==a[c] || a[j]==0)
       {
       a[j]=rand ()/((double)RAND_MAX+1)*40;
       c--;
       continue;
       }
      printf (" %d",a[j]);
      }
    }
   }
  }
10.12.2006. u 20:31 

Deyan_80
Kragujevac

Član broj: 117038
Poruke: 16
*.uis.kg.ac.yu.



Profil

icon Re: Generisanje slucajnog broja od 1 do 39...14.12.2006. u 12:15
Kao sto je pre mene neko napisao ovo bi trebalo da daje uvek razlicite brojeve
posto f-ja gleda sistemsko vreme sa tacnoscu u stotinkama a mozda i manje (takt procesora)
tako da je tesko da ti se pogodi isti slucajan broj

srand (time(NULL));

Pa sta mislite kako pri registraciji Windows uvek izbaci drugi broj. Naravno ko jos registruje WIN u ovoj predivnoj drzavi.
14.12.2006. u 12:15 

[es] :: C programiranje :: Generisanje slucajnog broja od 1 do 39...

[ Pregleda: 2307 | Odgovora: 16 ]

Postavi temu Odgovori

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