Zufallszahlen
Übersicht

Garfield12Betreff: Zufallszahlen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Für Mathematik arbeite ich momentan mit Zufallszahlen unter C++. Ich habe jetzt aber schon ein kleines Problem. Ich lasse eine Zufallszahl zwischen 1 und 6 generieren und ausgeben. Aber es kommt immer erst fünf dann 6 dann 1 dann 2 usw. Ich arbeite mit dem Borland C++BuilderX Personal Edition
Mein Code: Code: [AUSKLAPPEN] #include <cstdlib> #include <iostream> using namespace std; int main() { int iSecret, iGuess; /* initialize random seed: */ srand ( time(NULL) ); /* generate secret number: */ iSecret = rand() % 6 + 1; cout << iSecret; return 0; } Ist das normal so oder ist da ein Fehler auf meiner Seite. Ich habe schon in anderen Foren geposted aber die haben nix geantwortet. Garfield |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich geh mal davon aus, dass in C, genauso wie in fast jeder anderen Hochsprache, für die Zuffalsfunktion ein Zufallsgenerator intialisiert werden muss ![]() Edit2: Huch sry, machst du ja berreits.. ignoriere meinen post ![]() |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab's mit VC++ 2005 kompiliert und es funktioniert einwandfrei. Es kommen nur zufällige Zahlen. ![]() |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Edit: Sorry, habe den Rückgabewert von time(NULL) nicht beachtet, vergesst mein Posting...
Code: [AUSKLAPPEN] srand ( time(NULL) );
zu: Code: [AUSKLAPPEN] srand(MilliSecs());
Siehe srand. MilliSecs für Windows: Code: [AUSKLAPPEN] //MilliSecs
inline DWORD MilliSecs() { return GetTickCount(); //timeGetTime(); } Für Linux: Code: [AUSKLAPPEN] //MilliSecs
inline int MilliSecs() { struct timeval tv; gettimeofday(&tv, 0); return tv.tv_sec * 1000 + tv.tv_usec / 1000; } Beide geben nicht dieselben Werte zurück, aber das ist irrelevant, da du nur einen variablen Wert brauchst. Die folgenden BB-ähnlichen Funktionen kannst du möglicherweise auch gebrauchen: Code: [AUSKLAPPEN] const float RAND_MAX_FLOAT_INV = 1.0f / RAND_MAX;
//RandFloat inline float RandFloat(float rangeStart, float rangeEnd) { return (rand() * RAND_MAX_FLOAT_INV) * (rangeEnd - rangeStart) + rangeStart; } Code: [AUSKLAPPEN] //Rand
inline int Rand(int rangeStart, int rangeEnd) { return rand() % (rangeEnd - rangeStart + 1) + rangeStart; } |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Falsche Zufallsnetze können von starken Magnetfeldern in der Nähe verursacht werden. (Aufzüge in der Nähe?) | ||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab gerade keine Zeit, deswegen ignoriere ich mal die Antworten meiner Vorposter und sage einfach mal, wie es nach meinen mangelnden C++-Kenntnissen funktionieren sollte:
Code: [AUSKLAPPEN] srand (time(NULL));
// EIn paar Zahlen for (int x=1;x<=6;x++) { cout << rand()%6 << endl; } Ist natürlich kein lauffähiger Code, fehlt main(), die includes etc. Und OpenSSL von Debian macht es etwa so ![]() Code: [AUSKLAPPEN] int getRandomNumber() {
return 3; } |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ganz so schlimm wars nicht, return getpid(); triffts eher. Trotzdem wars/ists ne Katastrophe. | ||
Garfield12 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also es klappt bei einer Zahl schon richtig gut, aber jetzt hab ich das Programm erweitert:
Code: [AUSKLAPPEN] //*********************************** // // Kleines Programm zum ermitteln von 4 Zufallszahlen // und Auswertung nach Abs. und Rel. Häufigkeit // // // (C) Copyright by GoNevil Software Development // More Information on www.gonevil.com // //*********************************** #include <cstdlib> #include <ctime> #include <iostream> using namespace std; int main() { int loop; int eingabe; long b; long c; long d; long e; int six; int nox; cout << "Wie oft soll die vierer Reihe gewürfelt werden: " << endl; cin >> eingabe; for(loop = 0; loop < eingabe; ++loop) { // Initialisieren time_t sek; time(&sek); srand(sek); // Zufall ermitteln b = rand() % 6 + 1; c = rand() % 6 + 1; d = rand() % 6 + 1; e = rand() % 6 + 1; // Ausgeben cout << endl; cout << b; if(b == 6) { ++six; } else { ++nox; } cout << c; if(c == 6) { ++six; } else { ++nox; } cout << d; if(d == 6) { ++six; } else { ++nox; } cout << e; if(e == 6) { ++six; } else { ++nox; } cout << endl; b == 0; c == 0; d == 0; e == 0; } // Ausgeben von richtig und Falsch cout << endl; cout << "Sechsen: " << six; cout << endl; cout << "Keine Sechsen: " << eingabe; - six; cout << endl; // Abschluss des Programms cin.get(); return 0; } Jetzt funktionieren die Zufallszahlen nicht mehr richtig. Ausserdem möchte ich erfahren ob die in einer Reihe eine Sechs vorhanden ist. Und dann ausgeben ob mind. eine sechs in einer vierer Reihe ist. Nicht mehr. Man sieht ich habe schon experimentiert. Kann mir jemand einen Tipp zur Umsetzung geben? Garfield |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group