der käsewürfel (s.a Mathematik::Wie kann ich das verifizieren u. C++:: seltsame access violation)



  • es sieht mir so aus als wären unsere werte ziemlich identischm nur um eins verschoben... das ist seltsam



  • otze, könntest du bitte einmal deine Zufallsfunktion für den Käse posten?

    Also meine ist:

    unsigned int x, y, z;
        for (x = 0; x < 20; x++)
        {
            for (y = 0; y < 20; y++)
            {
                for (z = 0; z < 20; z++)
                {
                    unsigned int prob = rand() % 101;
                    if (prob <= CheeseProbability)
                    {
                        Cube.Data[x][y][z] = 1;
                    }
                    else
                    {
                        Cube.Data[x][y][z] = 0;
                    }
                }
            }
        }
    

    CheeseProbability geht von 0 - 100 und rand() % 101 sollte doch eine Zufallszahl zwischen 0 und 100 erzeugen, oder?

    Edit: Sorry, falls falsches Forum

    Daniel



  • ist zwar nicht besodners schön...

    so, das ganze ist in einer klasse:

    static bool isRandomized;
    //private methods
    bool randomizer(int chance=50){
        if(!isRandomized){
            srand(time(NULL));
    	isRandomized=true;
        }
        return rand()%100>chance?0:1;
    }
    

    der rest ist eigentlich so wie bei dir



  • otze schrieb:

    ist zwar nicht besodners schön...

    so, das ganze ist in einer klasse:

    static bool isRandomized;
    //private methods
    bool randomizer(int chance=50){
        if(!isRandomized){
            srand(time(NULL));
    	isRandomized=true;
        }
        return rand()%100>chance?0:1;
    }
    

    der rest ist eigentlich so wie bei dir

    Dein rand()%100 erzeugt doch nur Zahlen zwischen 0 und 99, oder?

    Also auf cplusplus.com hab ich in der Reference folgendes gefunden:

    printf ("A number between 0 and 99: %d\n", rand()%100);

    http://www.cplusplus.com/ref/cstdlib/rand.html

    Daniel



  • und was sagt dir das größer zeichen dahinter?



  • Das hatte ich übersehen 🙂



  • oops hattest doch recht, mir war klar, dass es nur werte von 0-99 geben konnte,hab mich dann aber doch mit dem > zeichen gedanklich verrannt, thx für das gute auge 🙂

    //edit also nochmal alles durchrechnen lassen^^

    daniel, hast du eugentlich auch en paar testwerte die du posten könntest? so zum vergleichen 🙂



  • Bin grad dabei 🙂

    edit: alle Werte jetzt mit 100k Durchläufen
    Käsewahrscheinlichkeit - Fließwahrscheinlichkeit
    65% - 91.69%
    66% - 78.978%
    67% - 59.73%
    68% - 38.709%
    69% - 21.048%
    70% - 9.924%
    71% - 4.19%
    72% - 1.514%
    73% - 0.559%

    Weitere folgen noch, dann aber mit 1000000 Durchläufen... oder ich bau einen Netzwerkmodus ein und schnapp mir den PC von meinem Bruder 😃

    Daniel



  • meine werte stimmen bisher mit deinen in etwa überein(ca 100k durchgänge)
    64%:97.609
    65%:91.704
    66%:79.216
    67%:60.188
    68%:38.483
    69%:21.072
    70%:9.814
    71%:4.144
    72%:1.531

    rest kommt per edit, ist aber echt krass, wieviel er compiler aus sonem kleinen programm noch an speed rausholen kann wenn man von debug auf release stellt 😮



  • Hab jetzt auch mal den Wert für 70% mit 10000000 Durchläufen ausrechnen lassen ... das dauert 🙂 Das ist recht genau bei 10% ich frage mich ob das Zufall ist oder wenn man es noch öfters laufen lässt, ob es dann 10 wird. Ich lass es mal mit 100 Millionen laufen 😃

    70% - 9.9699%

    Daniel



  • nein, das wird sich um 9,7% einpendeln, zwischen meinen 100k und deinen 1million durchläufen war ja auch kein großer unterschied mehr festzustellen



  • nt


Anmelden zum Antworten