matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++srand
Foren für weitere Studienfächer findest Du auf www.vorhilfe.de z.B. Astronomie • Medizin • Elektrotechnik • Maschinenbau • Bauingenieurwesen • Jura • Psychologie • Geowissenschaften
Forum "C/C++" - srand
srand < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

srand: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:02 So 11.07.2010
Autor: martina.m18

Hallo Zusammen,

im folgenden quellcode möchte ich den user am zahlenzufallsgenerator drehen lassen. Er soll dabei 6 verschiedene Zahlen bekommen und dann aufgefordert werden ob er nochmal spielen möchte..

mein problem ist bei der for-schleife die zeit, denn ich bekomme dann 6xdie gleiche zahl raus.... wie kann ich das ändern??
ich habs jetzt so gemacht dass ich srand(int)time(0) in meine Main genommen habe , jetzt gehts

->> dennoch möchte ich gern wissen wiso es jetzt geht, wird jetzt der zeitpunkt vom vorherigen wert jedesmal genommen
s0->s1->s2->s3...?? wie wird der zeitpunkt für die zufallszahl errechnet? danke...


1: #include<iostream>
2: #include<cstdlib>
3: #include<ctime>
4: using namespace std;
5:
6:
7:
8: int Lottozahlen(void);
9: [blue] srand((int)(time(0))); [/blue]
10: void main(){
11:
12: char f;
13:
14: do{
15:
16: for (int i=0;i<6;i++)
17: {cout<<Lottozahlen()<<endl;
18: }
19: cout<<"Wollen Sie weiterspielen j/n:"<<endl;
20: cin>>f;
21: }while(f!='n');
22:
23:
24:
25: }
26:
27:
28: int Lottozahlen (void)
29: {
30:
31:
32: int z =rand();
33: return(1+(z%49));
34: }



        
Bezug
srand: Antwort
Status: (Antwort) fertig Status 
Datum: 18:18 So 11.07.2010
Autor: rainerS

Hallo!

> Hallo Zusammen,
>  
> im folgenden quellcode möchte ich den user am
> zahlenzufallsgenerator drehen lassen. Er soll dabei 6
> verschiedene Zahlen bekommen und dann aufgefordert werden
> ob er nochmal spielen möchte..
>  
> mein problem ist bei der for-schleife die zeit, denn ich
> bekomme dann 6xdie gleiche zahl raus.... wie kann ich das
> ändern??
>  ich habs jetzt so gemacht dass ich srand(int)time(0) in
> meine Main genommen habe , jetzt gehts
>  
> ->> dennoch möchte ich gern wissen wiso es jetzt geht,
> wird jetzt der zeitpunkt vom vorherigen wert jedesmal
> genommen
> s0->s1->s2->s3...?? wie wird der zeitpunkt für die
> zufallszahl errechnet? danke...

rand() liefert keine Zufallszahlen, sondern Pseudozufallszahlen. Das heisst, die Rückgabewerte von rand() sind
gleichverteilt, aber vorhersagbar. Um das zu umgehen, kannst du vor der Benutzung srand(Zahl) aufrufen und so einen Anfangszustand vorgeben. Wenn du nichts vorgibst, wird 1 genommen.

Viele Grüße
   Rainer

Bezug
        
Bezug
srand: Antwort
Status: (Antwort) fertig Status 
Datum: 18:30 So 11.07.2010
Autor: Event_Horizon

hallo!

Das problem ist ein anderes.

Erstmal klar, man muß bei jedem Durchlauf des Programms einen anderen Startwert vorgeben, und das macht man gewöhnlich, indem man die aktuelle Zeit da reinfüttert. (Da die Zeit aber in Sekunden aufgelöst wird, wird dieses Programm bei mehrfachem Starten innerhalb einer Sekunde also auch gleiche Zahlen liefern)

Aber das Problem ist die Postion des srand ansich. Das ist ein Funktionsaufruf!
Aber so, wie er vorher da stand, also außerhalb der main(), sah das Dingen eher wie ein Prototyp aus, also Name mit Übergabeparameter einer Funktion, die später noch definiert wird.
Da die Funktion aber später nicht benutzt wird, gibt der Compiler höchstens ne Warnung raus, erzeugt aber dennoch das Programm. Und da in diesem das srand() nicht aufgerufen wird, gibt's stets die gleichen Zahlen.

Bezug
                
Bezug
srand: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:54 So 11.07.2010
Autor: martina.m18

okay vielen dank, ist jetzt nachvollziehbar
(auch für mich)

lg martina

Bezug
        
Bezug
srand: Frage (reagiert)
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 20:13 So 11.07.2010
Autor: martina.m18

hallo nochmal,

ich hab nun ein weiteres problem und hab keine ahnung was falsch läuft.
mein vorhaben ist es mit der Funktion GleicheZahlen zu überprüfen ob alle zahlen zufällig gleich sind, wenn ja soll die schleife mit continue abgebrochen werden->praktisch neuer anlauf-> bei bool nein sollen die
werte die bereits im array hinterlegt sind, ausgespuckt werden.
Gleiche zahlen hab ich als bool dekl. und definiert.

-> nun soweit sogut, jedoch habe ich einen fehler :
mit if((GleicheZahlen(ArrayLotto,l) sagt mein compiler
dass ich keine zwei argumente übergeben kann, warum nicht
hab das in ähnlicher form (mit variabeln) schon mal gemacht, da
gings.


if( (GleicheZahlen(ArrayLotto,l)))continue;
else {for (int i=0;i<6;i++)
cout<<ArrayLotto[i];};



green] ok .. erledigt eigener fehler in der deklaration, habe den typ für die länge dort vergessn[/green]

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]