rand() mit doublewerten



  • dann hast du aber nicht gut genug gegoogelt

    double drand(double max) {
      return (double)rand()/RAND_MAX * max;
    }
    


  • ich versteh nicht was max ist und wie ich daraus zufall rauskriege??
    mit dieser funktion kriegt man doch garkeinen wert raus 😕



  • !? schrieb:

    ich versteh nicht was max ist und wie ich daraus zufall rauskriege??
    mit dieser funktion kriegt man doch garkeinen wert raus 😕

    Stimmt nicht! Wie wendest du die denn an??

    EDIT: Das dürfte die Version mit zusätzlichem Minimum sein, falls du das auch brauchst (ungetestet):

    double drand(double min,double max) { 
    	return min+(double)rand()/RAND_MAX * (max-min); 
    }
    


  • ich weiss es ja nicht 😞



  • !? schrieb:

    ich weiss es ja nicht 😞

    Ok, kleines Beispielprogramm:

    double drand(double min,double max) { 
    	return min+(double)rand()/RAND_MAX * (max-min); 
    }
    
    int main() 
    { 
    	srand(time(0));
    	for(int i=0;i<100;i++) {
    		double d=drand(0.0,50.0);  // <= Aufruf!
    		std::cout << d << std::endl;
    	}
    	getchar();
    }
    


  • die grenzen sind bei mir ja 0-RAND_MAX

    int zufall= (double)rand() /RAND_MAX * RAND_MAX;
    

    ich hab die Funktion so noch nie gesehen und weiss garnichtw as ich damit machen soll

    double drand(double min,double max) { 
        return min+(double)rand()/RAND_MAX * (max-min); 
    }
    


  • also ich muss ja sagen das ich kein profi bin aber ist

    std::cout << d << std::endl;
    

    nicht ein anderes c?



  • !? schrieb:

    also ich muss ja sagen das ich kein profi bin aber ist

    std::cout << d << std::endl;
    

    nicht ein anderes c?

    Upps! Wir sind ja im C-Forum... 🤡

    Dann eben

    printf("%f\n",d);
    

    Btw: Also ich denke, die Parameter min und max der Funktion sind selbsterklärend, oder nicht? Wenn du von 0 bis RAND_MAX gehen willst, dann übergib halt genau diese Werte...



  • was macht denn die for-schleife da?



  • !? schrieb:

    was macht denn die for-schleife da?

    😮

    Die gibt dir einfach exemplarisch mal 100 erzeugte Zufallswerte aus...



  • das wollt ich doch garnicht ..ich will nur einen wert erstmal und das klappt ja cniht ..ich sitz hier shcon seit stunden dran und krieg das einfach cnith hin selbst mit dem was ihr mir hier postet. ich kapiers echt nicht.

    mit inter werten wär das ja alles total easy aber so ..ich glaube ich muss wohl kapitulieren

    aber nochmal kurz bei min=0 und ohne schleife:

    double min =0;
    double drand(double min,double RAND_MAX) 
    { 
        return min+(double)rand()/RAND_MAX * RAND_MAX; 
    }
    
    int main() 
    { 
        srand(time(0));
            double d=drand(0.0,50.0);  // <= Aufruf!
            printf("%f\n",d);
        getchar();
    }
    

    das wäre quasi meine variante istd as richtig?
    und wie kommste auf (0.0,50.0); oder solld as (double min,double RAND_MAX) sein?



  • !? schrieb:

    das wollt ich doch garnicht

    Das ja auch nur ein Beispiel, stand ja schließlich auch da... 🙄

    !? schrieb:

    aber nochmal kurz bei min=0 und ohne schleife:

    double min =0;
    double drand(double min,double RAND_MAX) 
    { 
        return min+(double)rand()/RAND_MAX * RAND_MAX; 
    }
    
    int main() 
    { 
        srand(time(0));
            double d=drand(0.0,50.0);  // <= Aufruf!
            printf("%f\n",d);
        getchar();
    }
    

    das wäre quasi meine variante istd as richtig?

    Klar, wenn du einfach einen einzelnen Wert brauchst, passt das für dich (abgesehen von den min-max-Werten).

    EDIT: NEIN! Hab nicht richtig hingesehen. Das kriegst du doch gar nicht kompiliert! Lass die Funktion so, wie sie ist, das ist schon richtig so. Als PARAMETER übergibst du dann deinen gewünschten Minimum-Wert (0) und deinen gewünschten Maximum-Wert (RAND_MAX). Bevor du solche Sachen hier postest, solltest du sie wenigstens mal ausprobieren...

    !? schrieb:

    und wie kommste auf (0.0,50.0); oder solld as (double min,double RAND_MAX) sein?

    Und wieder: Beispiel... ich weiß ja schließlich nicht, welche Werte du brauchst (hattest du vorher auch nicht erwähnt)...



  • Troll™



  • das wollt ich doch garnicht ..ich will nur einen wert erstmal und das klappt ja cniht ..ich sitz hier shcon seit stunden dran und krieg das einfach cnith hin selbst mit dem was ihr mir hier postet. ich kapiers echt nicht.

    mit inter werten wär das ja alles total easy aber so ..ich glaube ich muss wohl kapitulieren

    aber nochmal kurz bei min=0 und ohne schleife:

    double min =0;
    double drand(double min,double RAND_MAX) 
    { 
        return min+(double)rand()/RAND_MAX * RAND_MAX; 
    }
    
    int main() 
    { 
        srand(time(0));
            double d=drand(0.0,50.0);  // <= Aufruf!
            printf("%f\n",d);
        getchar();
    }
    

    das wäre quasi meine variante istd as richtig?
    und wie kommste auf (0.0,50.0); oder solld as (double min,double RAND_MAX) sein?



  • Tachyon schrieb:

    Troll™

    Ja, glaub ich langsam auch... 🙄



  • Mach's einfach so:

    double RAND_MAX(double RAND_MAX,double RAND_MAX) 
    { 
        return RAND_MAX+(double)rand()/RAND_MAX * RAND_MAX; 
    }
    
    int main() 
    { 
        srand(RAND_MAX(0));
        double d=RAND_MAX(RAND_MAX,RAND_MAX);  // <= Aufruf!
        printf("%f\n",RAND_MAX);
        getchar();
    }
    

    Dein Super-Compiler kriegt das sicher übersetzt, und da kommt bestimmt irgendwie und irgendwo irgendwas mit RAND_MAX raus... 😃



  • naja so wie ihr es hier postet klappts nicht sonst würd ich ja auch kaum weiternerven. aber ich lass es nun tschöö



  • !? schrieb:

    aber ich lass es nun

    ja, lass es besser. so doof wie du kann doch keiner sein.
    🙂



  • !? schrieb:

    naja so wie ihr es hier postet klappts nicht sonst würd ich ja auch kaum weiternerven.

    Also falls du das wirklich alles ernst meinst (woran ich berechtigte Zweifel habe): es klappt bei jedem außer dir...


Anmelden zum Antworten