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 Hochschulmathe
  Status Uni-Analysis
    Status Reelle Analysis
    Status UKomplx
    Status Uni-Kompl. Analysis
    Status Differentialgl.
    Status Maß/Integrat-Theorie
    Status Funktionalanalysis
    Status Transformationen
    Status UAnaSon
  Status Uni-Lin. Algebra
    Status Abbildungen
    Status ULinAGS
    Status Matrizen
    Status Determinanten
    Status Eigenwerte
    Status Skalarprodukte
    Status Moduln/Vektorraum
    Status Sonstiges
  Status Algebra+Zahlentheo.
    Status Algebra
    Status Zahlentheorie
  Status Diskrete Mathematik
    Status Diskrete Optimierung
    Status Graphentheorie
    Status Operations Research
    Status Relationen
  Status Fachdidaktik
  Status Finanz+Versicherung
    Status Uni-Finanzmathematik
    Status Uni-Versicherungsmat
  Status Logik+Mengenlehre
    Status Logik
    Status Mengenlehre
  Status Numerik
    Status Lin. Gleich.-systeme
    Status Nichtlineare Gleich.
    Status Interpol.+Approx.
    Status Integr.+Differenz.
    Status Eigenwertprobleme
    Status DGL
  Status Uni-Stochastik
    Status Kombinatorik
    Status math. Statistik
    Status Statistik (Anwend.)
    Status stoch. Analysis
    Status stoch. Prozesse
    Status Wahrscheinlichkeitstheorie
  Status Topologie+Geometrie
  Status Uni-Sonstiges

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
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++srand
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
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.unimatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]