zufall
-
ich möchte zu hause lotto spielen :p
und zwar gibt es eine ziehung 6 aus 6, jedoch ist die reihenfolge wichtig!
und zwar habe ich dafür ein prog geschrieben, der bringt mir jedoch oft zwei gleich zahlen...
ich weiss nicht warum?
könntet ihr mir helfen?
hier das prog.#include<iostream> using namespace std; int main() { int a; int b; int c; int d; int e; int f; int array[]={1,2,3,4,5,6}; srand(time(NULL)); //rand() erzeugt nur Pseudo-Zufallszahlen. //Hier setze ich den Start-Wert von rand() //Auf die aktuelle Zeit. a=rand() % 6 + 1; //der Modulo-Operator % Gibt den Rest einer //Ganzzahlen-Division zurück. //Man teile(modulo) rand() durch 4 und addiere //1, schon bekommt man ein Zahl von 1-4. b = array[1+(rand() % 1)]; c = array[2+(rand() % 1)]; d = array[3+(rand() % 1)]; e = array[4+(rand() % 1)]; f = array[5+(rand() % 1)]; cout<<a; cout<<"\n"; cout<<b; cout<<"\n"; cout<<c; cout<<"\n"; cout<<d; cout<<"\n"; cout<<e; cout<<"\n"; cout<<f; cout<<"\n"; cin.get(); }
-
btw: die zahlen 1 2 3 4 5 6 sollen alle genau ein mal vorhanden sein, und nicht doppelt.
-
e = array[4+(rand() % 1)]; f = array[5+(rand() % 1)];rand()%1 liefert immer 0.
versteh nicht so recht, warum du für a eine zufallszahl zwischen 1 und 6 "ziehst" und die restlichen 5 werte mit werten aus einem vordefinierten array belegst.
-
wie sollte ich es denn deiner meinung nach machen?
so gehe ich der gefahr aus, dass die einzelnen zahlen sonst gleich sein könnten...
ich bin offen für eine änderung
-
Mach es so:
unsigned int lottozahlen[ 49 ]; size_t size = sizeof( lottozahlen ) / sizeof( unsigned int ); for( int i = 0; i < size; ++i ) lottozahlen[ i ] = i + 1; //Zufallsgenerator initialisieren srand( time( 0 ) ); //Jetzt wird gemischt random_shuffle( lottozahlen, lottozahlen + size ); //Zahlen ausgeben copy( lottozahlen, lottozahlen + 6, ostream_iterator< unsigned int >( cout, ' ' ) );Edit:
Als Header benötigst du <algorithm>.
-
du willst eine ziehung 6 aus 6, es werden also immer alle 6 zahlen vorkommen. du musst also "nur" dein fertiges array permutieren, d.h. die reihenfolge irgendwie ändern.
eine idee wäre, dass du die erste zahl mit rand()%6 aus dem array "ziehst" und es anschliessend um 1 "verringerst". die nächste zahl ziehst du mit rand()%5 usw.