www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de