Zufallszahl
-
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)."