Zufallsgenerator srand rand()?? mehr mals ausführen??



  • hey
    ich hab folgendes problem und zwar möchte ich mir zwei zahlen per zufall mit srand bzw rand() generieren lassen doch das tut es nicht es werden immer die zwei gleichen zahlen 9 und 6 generiert....woran kann das liegen?
    und mein zweites problem ist wie kann ich diese operationen mehr mals ausführen lassen zum beispiel 10 mal zwei zahlen generieren??
    hier mein code ...
    [cpp]
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #include<cmath>
    #include<iostream>
    using namespace std;
    int main()
    {
    int a, b,
    srand(time(NULL));
    a = rand() % 9 + 1;
    b = rand() % 9 + 1;
    cout << a << endl;
    cout << b << endl;
    system("pause");
    return 0;
    }


  • Mod

    Mach ein Semikolon statt einem Komma hinter dem int a,b

    P.S.: Das hättest dir dein Compiler mit ziemlicher Sicherheit auch gesagt, wenn du mit Warnungen compilieren würdest, was man immer tun sollte.

    P.P.S.: Die .h-Header gibt es nur auch Kompatibilitätsgründen noch. In C++ heißen die cstdio, cstdlib und ctime.



  • Naja, wenn du mod 9 machst, dann bekommst du "nur" 9 verschiedene Werte (0....8), also ist die Chance nicht so gering, dass du öfters dieselbe Zahl bekommst.

    Wenn du etwas öfters ausführen möchtest, dann benutze eine Schleife.
    In deinem Fall eine for-Schleife, da du ja bereits weißt, wie oft sie ausgeführt werden soll. Und achte darauf, dass das srand(...) NICHT in der Schleife steht.

    Gruß



  • SeppJ schrieb:

    Mach ein Semikolon statt einem Komma hinter dem int a,b

    P.S.: Das hättest dir dein Compiler mit ziemlicher Sicherheit auch gesagt, wenn du mit Warnungen compilieren würdest, was man immer tun sollte.

    Wenn man ein ; vergißt, hat man doch einen Fehler und keine Warnung produziert, oder?


  • Mod

    Dweb schrieb:

    Wenn man ein ; vergißt, hat man doch einen Fehler und keine Warnung produziert, oder?

    Zusatzaufgabe: Finde heraus, warum das hier kein Fehler ist und was stattdessen passiert.

    Tipp: Die Compilerwarnung hilft dabei.

    edit: Erklärung: Compilerwarnungen treten in der Regel bei ungewöhnlichen Programmierstrukturen auf. Dies tritt normalerweise auf wenn man zwar einen Fehler gemacht hat, der Compiler das aber doch irgendwie übersetzt bekommen hat.



  • Dweb schrieb:

    Wenn man ein ; vergißt, hat man doch einen Fehler und keine Warnung produziert, oder?

    in diesem Fall gibt es nur ein Warnung. Da man ein "int srand;" einen Wert zuweist, den man nie verwendet



  • wow das ging ja fix...
    vielen dank schon mal ich werd es ma korrigieren und versuchen ... 😃



  • BigNeal schrieb:

    Dweb schrieb:

    Wenn man ein ; vergißt, hat man doch einen Fehler und keine Warnung produziert, oder?

    in diesem Fall gibt es nur ein Warnung. Da man ein "int srand;" einen Wert zuweist, den man nie verwendet

    Ach ja, natürlich... ich war gerade irgendwie beim Allgemeinen Fall, wenn man eine Anweisung nicht mit einem Semikolon beendet, darum hatte mich die Aussage von SeppJ stutzig gemacht. :p



  • wie kann ich meinen zufallsgenerator 10 mal ausführen lassen ??
    mit for??? wie muss die for schleife heißen 😮



  • for(int i = 0; i < 10; ++i)
    


  • puhh danke ich mach schon seit ner stunde alle möglichen for schleifen durch 😃


Anmelden zum Antworten