Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » problem mit zufallszahlen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.08.2004, 18:16 Uhr
~markus
Gast


hallo

ich habe in der FAQ gelesen und dabei die Funktion von Zufallszahlen gesehen. Die habe ich nun so abgeändert:


Code:

...

#include <time.h>

...

int zufallszahlengenerator (int von, int bis, int zahl)
{
   srand(time(NULL));
   zahl=von+rand()%(bis-von+1);
   return zahl;
}


Wenn ich dann die Funktion aufrufe, bekomme ich immer die gleiche Zufallszahl heraus. Mach ich irgendetwas falsch???? Ich hoffe ihr könnt mir helfen!!!

gruß markus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.08.2004, 18:31 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zufallszahlen bei rand werden so "berechnet"

x(n+1) = (a*x(n)+b)%c wobei a b und c schlau gewählte konstanten sind...


mit srand setzt du den startwert.. du "impfst" also deinen zufallsgenerator... meist nimmt man dafür die zeit.

wenn du immer mit dem selber startwert startest kommt natürlich auch immer die gleich zahl raus weil ja nur errechnet ist...
sinnvoll arbeiten kannst du damit also nur in dem du das programm nicht ständig neu anschmeisst sondern innerhalb des programmes mehrmals rand aufrufst...


C++:

int zufallszahlengenerator (int von, int bis){
//   srand(time(NULL));  //das musst du rausschmeissen der wird nur einmal bei programmstart gesetzt (geimpft)
      return von+rand()%(bis-von+1);
}

int main(){
srand(time(NULL));  //seed setzen
for(int i=0;i<10;++i)printf("%d\n",zufallszahlengenerator(10,20));
}



--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.08.2004, 18:52 Uhr
~markus
Gast


ich würde dann aber gerne eine variable als rückgabewert haben, weil ich mit dieser dann noch arbeiten möchte!!!

gruß markus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.08.2004, 18:59 Uhr
typecast
aka loddab
(Operator)


Hast du doch. Die Funktion zufallsgenerator gibt dir den wert fuer die Variable zurueck
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.08.2004, 19:00 Uhr
~markus
Gast


außerdem möchte gerne nur eine zufallszahl haben und nicht 10 so wie in deinem Beispiel!!!

gruß markus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.08.2004, 19:05 Uhr
typecast
aka loddab
(Operator)


Hmm, ich glaube du solltest dir vielleicht die Grundlagen von C/C++ nochmal anschauen. zufallszahlgenerator gibt nur eine Zahl zurueck


C++:
int wert = zufallszahlgenerator(10, 20);


--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.08.2004, 19:05 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

außerdem möchte gerne nur eine zufallszahl haben und nicht 10 so wie in deinem Beispiel!!!


*lol* ich will kühe...

wenn du nur eine zufallszahl haben willst musst du rand ja auch nur einmal aufrufen dann bekommst du doch genau eine...

was genau willst du denn machen mit so wenig informationen ist es schwer dir zu helfen...
eines solltest du dir klar machen es gibt auf dem rechner keinen echten zufall der wird nur simuliert...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.08.2004, 19:09 Uhr
~markus
Gast


ja er gibt nur eine zahl zurück aber durch die for-schleife werden 10 zufallszahlen ausgegeben und ich dachte das würde mit dazu gehören damit alles funktioniert. Habe ich mich wohl geirrt. SORRY

vielen dank

gruß markus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: