Zufallszahl
-
Hallo,
ich habe eine ganze Reihe von Zahlen in meinem Programm ausgeben lassen!
Jetzt bräuchte ich aber in meiner Ausgabe nur eine Zahl, die per Zufall ausgewählt werden sollte! Da gibt es doch die Funktion rand(), aber wie setze ich diese ein?? Kann mir jemand helfen??
(ich weiß das ist ne Anfängerfrage)
peter
-
// Initialisierung std::srand (::timeGetTime()); // Benutzung std::cout << "Zahl zwischen 0 und 100: " << std::rand ()%100 << std::endl;
-
Mein Programm sieht eher so aus:
#include <iostream> using namespace std; int main() { int i[20]={3,5,1,34,6,7,44,19,20,2,8,17,9,27,24,29,25,56,78,4}; for(int y=0;y<20;y++) { cout<<i[y]<<endl; } return 0; }
Und jetzt brauch ich per Zufall eine Zahl aus den möglichen 20!!
MfG
petr
-
Wo ist das Problem? Ich hab Dir code gepostet wie es geht.
Also, streng mal Dein Hirn an
-
Das Beispiel von nix da liefert die Zufallzahlen von 0 bis 99, willst du Zufallzahlen aus einem Array mit 20 Elementen bekommst du die Zufallszahl durch rand () % 20;
-
Ich bekomme mehrere Fehlermeldungen:
// nach Vorschlag von "nix da": error C2039: 'srand' : Ist kein Element von 'std' error C2039: 'rand' : Ist kein Element von 'std' // wenn namespace am Anfang definiert, Fehler beim Linkvorgang: error LNK2001: Nichtaufgeloestes externes Symbol __imp__timeGetTime@0 fatal error LNK1120: 1 unaufgeloeste externe Verweise
Nochwas: Brauche ich für rand() eine header??
-
Sorry, srand und rand sind im globalen Namespace, drum kein std:: sondern :: und die Sache mit timeGetTime, du musst noch eine lib linken sowie einen Header für diese "spezial"funktion einbinden.
-
nimm zur erstinitialisierung einfach nur time() aus <ctime>
@nixda
standard ist was anderesdie lib kann er sich schenken *grins*
long sek; // Zeit in Sekunden lesen: time( &sek); /*time: nimmt die systemtime: time_t time( time_t *timer );*/ // srand((unsigned)sek); // Zufallsgenerator initialisieren, setzt den Startpoint int zahl = (rand() % 20) + 1;//generiert eine Zufahlsnummer, mit modulo 20 kommen werte zwischen 0 und 19 raus, dann wird + 1 gesetzt
-
@elise: Nicht so gütig sein. In der FAQ steht bereits ein sehr schöner Thread.
Einfaches lesen hätte genügt.
MfG SideWinder
-
na ja, bevor hier in c++ standard so eine komische lib eingebunden werden soll, greif ich doch lieber ein
-
hrhr
MfG SideWinder
-
Nur als Anmerkung am Rand. (kleines Wortspiel
)
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, 1990 (1st ed, p. 207)), the following comments are
made:
"If you want to generate a random integer between 1
and 10, you should always do it byj=1+(int) (10.0*rand()/(RAND_MAX+1.0));
and never by anything resembling
j=1+((int) (1000000.0*rand()) % 10);
(which uses lower-order bits)."