Zufall in C++

Diskutiere Zufall in C++ im Developer Network Forum im Bereich Hardware & Software Forum; Also, ich will einen Lotto generator programieren (als übung) da ist mir aufgefallen das man die lotto zahlen garnicht per Zufalls generator...
  • Zufall in C++ Beitrag #1
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Also, ich will einen Lotto generator programieren (als übung)
da ist mir aufgefallen das man die lotto zahlen garnicht per Zufalls generator machen kann da dann Zahlen doppelt vorkommen können und weil ich kein bock habe ganz viele if bedingungen da rein zu packen wollte ich fragen ob es eine andere Lösung gibt.

Ps. ich bin noch ein Absoluter noob, also bitte nicht so komplieziert
Danke

Mfg. Matyr :hal:
 
  • Zufall in C++ Beitrag #2
Scorn07

Scorn07

Bekanntes Mitglied
Dabei seit
14.01.2007
Beiträge
253
Reaktionspunkte
0
Also, ich will einen Lotto generator programieren (als übung)
da ist mir aufgefallen das man die lotto zahlen garnicht per Zufalls generator machen kann da dann Zahlen doppelt vorkommen können und weil ich kein bock habe ganz viele if bedingungen da rein zu packen wollte ich fragen ob es eine andere Lösung gibt.

Ps. ich bin noch ein Absoluter noob, also bitte nicht so komplieziert
Danke

Mfg. Matyr :hal:

Doch das geht mit einem normalen Zufallsgenerator:
Du musst einfach immer, wenn du eine neue Zufallszahl erstellst, prüfen ob es sie schon einmal gibt und wenn ja erstellst du wieder eine neue Zufallszahl. Das ganze machst du solange bis die neue Zufallszahl noch nicht dabei war.
Mit ner simplen Schleifen sollte das ganz einfach zu machen sein.

Pseudocode:
funktion Nochnichtvorhanden(Lottozahl)
vorhanden = false // oder für C- Anhänger = 0
for zähler = 1 to 6
if Lottozahl == Lottozahlenarray[Zähler] then
vorhanden = true
end //for
end // Nochnichtvorhanden()

for zähler = 1 to 6
repeat
Lottozahlenarray[Zähler] = Zufallszahl(1-49)
until Nochnichtvorhanden(Lottozahlen[Zähler])
end //for
 
Zuletzt bearbeitet:
  • Zufall in C++ Beitrag #3
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Ok, dann muss ich mal probieren^^

wenn ichs geschaft habe poste ich den Code.
 
  • Zufall in C++ Beitrag #4
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
kann man programmieren das der Alte text im Bildschirm gelöscht wird?
 
  • Zufall in C++ Beitrag #5
fox99

fox99

Bekanntes Mitglied
Dabei seit
27.11.1999
Beiträge
3.948
Reaktionspunkte
27
Ort
Omicron Persei 8
du könntest ein array verwenden, in dem alle kugelnummern gespeichert werden.
beim mischen vertauscht du zufällig immer 2 felder.
 
  • Zufall in C++ Beitrag #6
C

COGE

Bekanntes Mitglied
Dabei seit
13.01.1999
Beiträge
6.151
Reaktionspunkte
3
Ort
hinten wie von vorne
mit welche Entwicklungsumgebung arbeitest du ?
Soll es eine Konsolenanwendung werden?
 
  • Zufall in C++ Beitrag #7
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
C++

oder was ist eine Umwicklungsumgebung?
 
  • Zufall in C++ Beitrag #8
C

COGE

Bekanntes Mitglied
Dabei seit
13.01.1999
Beiträge
6.151
Reaktionspunkte
3
Ort
hinten wie von vorne
Visual C++, Borland oä
 
  • Zufall in C++ Beitrag #9
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Aso dann CodeBlocks wenn das gemeint ist.
 
  • Zufall in C++ Beitrag #10
Scorn07

Scorn07

Bekanntes Mitglied
Dabei seit
14.01.2007
Beiträge
253
Reaktionspunkte
0
jo, das ist eine Entwicklungsumgebung.

Wie weit bist du denn jetzt? Vielleicht kannste ja mal deine bisherigen Ergebnisse posten.
 
  • Zufall in C++ Beitrag #11
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Habe heute nicht weitermachen können.

#include <iostream>
#include <time.h>

using namespace std;

int Zufallsarray[6];
int Zahlenarray[6];

int main()
{
/////////////////////Das Eingeben////////////////////////////////////////
cout<<"\t\tLoto Generator\n\t\t 6 aus 49\n\n\n\n\n\n";
cin.get();
cout<<" Geben sie 6 Zahlen ein: \n\n";


cout<<"Zahl 1\n";
A:
cin>>Zahlenarray[0];
if(Zahlenarray[0]>49 || Zahlenarray[0]<=0 )
{cout<<"Falsche Zahl\n\a"; goto A;}

cout<<"Zahl 2\n";
B:
cin>>Zahlenarray[1];
if(Zahlenarray[1]>49 || Zahlenarray[1]<=0 || Zahlenarray[1]==Zahlenarray[0])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto B;}

cout<<"Zahl 3\n";
C:
cin>>Zahlenarray[2];
if(Zahlenarray[2]>49 || Zahlenarray[2]<=0 || Zahlenarray[2]==Zahlenarray[0,1])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto C;}

cout<<"Zahl 4\n";
D:
cin>>Zahlenarray[3];
if(Zahlenarray[3]>49 || Zahlenarray[3]<=0 || Zahlenarray[3]==Zahlenarray[0,1,2])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto D;}

cout<<"Zahl 5\n";
E:
cin>>Zahlenarray[4];
if(Zahlenarray[4]>49 || Zahlenarray[4]<=0 || Zahlenarray[4]==Zahlenarray[0,1,2,3])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto E;}


cout<<"Zahl 6\n";
F:
cin>>Zahlenarray[5];
if(Zahlenarray[5]>49 || Zahlenarray[5]<=0 || Zahlenarray[5]==Zahlenarray[0,1,2,3,4])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto F;}


/////////////////////Die Berechnung///////////////////////////////////

Nochmal:
///Setzt die Zufalls Zahlen
for(int i=0;i<6;i=i+1)
{
Zufallsarray=(rand()%49)+1;
}

///Doppelte Zahlen
if(Zufallsarray[0]==Zufallsarray[1,2,3,4,5]){goto Nochmal;}
if(Zufallsarray[1]==Zufallsarray[2,3,4,5]){goto Nochmal;}
if(Zufallsarray[2]==Zufallsarray[3,4,5]){goto Nochmal;}
if(Zufallsarray[3]==Zufallsarray[4,5]){goto Nochmal;}
if(Zufallsarray[4]==Zufallsarray[5]){goto Nochmal;}




//////////////Das Ergebnis/////////////////////////
{
for(int j=0;j>100;j=j+1){cout<<"\n\n\n";}
}



}


 
  • Zufall in C++ Beitrag #12
C

cc_ip

Bekanntes Mitglied
Dabei seit
08.03.2007
Beiträge
214
Reaktionspunkte
0
mein tipp: verwende anstatt goto eine while schleife, goto befehle sind in c programmen seeeehr seehr ungern gesehn.
 
  • Zufall in C++ Beitrag #13
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Weiß nicht wie das geht,

was ist denn mit goto?
 
  • Zufall in C++ Beitrag #14
Scorn07

Scorn07

Bekanntes Mitglied
Dabei seit
14.01.2007
Beiträge
253
Reaktionspunkte
0
Weiß nicht wie das geht,

was ist denn mit goto?

GOTO ist nicht zu empfehlen, weil die Code dann schnell unübersichtlich wird und kaum noch zu kommentieren ist.
Bei so kleinen Programmen wie deins wird das noch gut funktionieren, nur sobald es etwas komplexer wird, hast du mit GOTO ein Problem.
 
  • Zufall in C++ Beitrag #15
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Ich habe ein problem mit meinem Zufall

So wie das jetzt ist [siehe queltext unten] rechnet der sehr lange und gibt immer die gleiche Zahl aus

Wenn ich nur rand() ohne srand vorher eingebe gibt er bei jedem versuch die gleichen zahlen aus.


#include <iostream>
#include <time.h>

using namespace std;

int Zufallsarray[6];
int Zahlenarray[6];

int main()
{
/////////////////////Das Eingeben////////////////////////////////////////
cout<<"\t\tLoto Generator\n\t\t 6 aus 49\n\n\n\n\n\n";
cin.get();
cout<<" Geben sie 6 Zahlen ein: \n\n";


cout<<"Zahl 1\n";
A:
cin>>Zahlenarray[0];
cout<<"\n";
if(Zahlenarray[0]>49 || Zahlenarray[0]<=0 )
{cout<<"Falsche Zahl\n\a"; goto A;}

cout<<"Zahl 2\n";
B:
cin>>Zahlenarray[1];
cout<<"\n";
if(Zahlenarray[1]>49 || Zahlenarray[1]<=0 || Zahlenarray[1]==Zahlenarray[0])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto B;}

cout<<"Zahl 3\n";
C:
cin>>Zahlenarray[2];
cout<<"\n";
if(Zahlenarray[2]>49 || Zahlenarray[2]<=0 || Zahlenarray[2]==Zahlenarray[0] || Zahlenarray[2]==Zahlenarray[1])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto C;}

cout<<"Zahl 4\n";
D:
cin>>Zahlenarray[3];
cout<<"\n";
if(Zahlenarray[3]>49 || Zahlenarray[3]<=0 || Zahlenarray[3]==Zahlenarray[0] || Zahlenarray[3]==Zahlenarray[1] || Zahlenarray[3]==Zahlenarray[2])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto D;}

cout<<"Zahl 5\n";
E:
cin>>Zahlenarray[4];
cout<<"\n";
if(Zahlenarray[4]>49 || Zahlenarray[4]<=0 || Zahlenarray[4]==Zahlenarray[0] || Zahlenarray[4]==Zahlenarray[1] || Zahlenarray[4]==Zahlenarray[2] || Zahlenarray[4]==Zahlenarray[3])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto E;}


cout<<"Zahl 6\n";
F:
cin>>Zahlenarray[5];
cout<<"\n";
if(Zahlenarray[5]>49 || Zahlenarray[5]<=0 || Zahlenarray[5]==Zahlenarray[0] || Zahlenarray[5]==Zahlenarray[1] || Zahlenarray[5]==Zahlenarray[2] || Zahlenarray[5]==Zahlenarray[3] || Zahlenarray[5]==Zahlenarray[4])
{cout<<"Falsche Zahl oder Wiederholung\n\a"; goto F;}


/////////////////////Die Berechnung///////////////////////////////////

Nochmal:
///Setzt die Zufalls Zahlen
for(int i=0;i<6;i=i+1)
{
srand(time());
Zufallsarray=(rand()%49)+1;
}

///Doppelte Zahlen
if(Zufallsarray[0]==Zufallsarray[1,2,3,4,5]){goto Nochmal;}
if(Zufallsarray[1]==Zufallsarray[2,3,4,5]){goto Nochmal;}
if(Zufallsarray[2]==Zufallsarray[3,4,5]){goto Nochmal;}
if(Zufallsarray[3]==Zufallsarray[4,5]){goto Nochmal;}
if(Zufallsarray[4]==Zufallsarray[5]){goto Nochmal;}




//////////////Das Ergebnis/////////////////////////

cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
cout<<"\tDeine Zahlen\tLotto Zahlen\n";

for(int j=0;j<5;j=j+1)
{
cout<<"\t"<<Zahlenarray[j]<<"\t\t\t"<<Zufallsarray[j]<<"\n";
}





}
 
  • Zufall in C++ Beitrag #16
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Eine antwort wäre sehr schön denn bei google finde ich nichts.
 
  • Zufall in C++ Beitrag #17
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Ich habe ein problem mit meinem Zufall

So wie das jetzt ist [siehe queltext unten] rechnet der sehr lange und gibt immer die gleiche Zahl aus

Wenn ich nur rand() ohne srand vorher eingebe gibt er bei jedem versuch die gleichen zahlen aus.
Weil die Berechnung der Zufallszahlen immer mir dem gleichen Startwert beginnt. Damit hast Du immer die gleiche Folge an Zufallszahlen. Um das zu verhindern rufst Du am Anfang Deines Programmes srand() einmal auf und übergibst als Parameter die aktuelle Zeit. Z.B. srand(time(0));
 
Zuletzt bearbeitet:
  • Zufall in C++ Beitrag #18
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
wenn ich srand aufrufe kommen immer die gleichen zahlen dabei herraus
 
  • Zufall in C++ Beitrag #19
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
wenn ich srand aufrufe kommen immer die gleichen zahlen dabei herraus
Dann machst Du was falsch. Bei folgendem Code solltest Du mit jedem Aufruf unterschiedliche Zahlen erhalten.
Code:
    srand(time(0));

    for (int i = 0; i < 10; i++)
        printf("%i\n", rand());
 
  • Zufall in C++ Beitrag #20
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
hat geklapt irgendwie hat er das nicht gemacht.

Nach erneutem hochfahren hats aufeinmal geklapt.

Danke

Mfg. Matyr
 
Thema:

Zufall in C++

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben