Random



  • Dravere schrieb:

    Aber ich will mal nicht so sein 🤡
    Ganz einfach geht das so:

    Random random = new Random();
    uint number = (uint)(random.NextDouble() * uint.MaxValue);
    

    Danke schön, hat mir sehr geholfen 👍



  • Leider kann ich nicht editieren.
    @Dravere:
    Gäbe es jetzt vielleicht noch eine Möglichkeit das einzugrenzen?


  • Administrator

    C_Sharp schrieb:

    Gäbe es jetzt vielleicht noch eine Möglichkeit das einzugrenzen?

    Ja, mit dem Modulo Operator.

    Random random = new Random();
    uint upperLimit = 3000000000;
    uint number = (uint)(random.NextDouble() * uint.MaxValue) % upperLimit;
    

    So sind alle Zahlen zwischen 0 und 3000000000 exklusiv. Falls du die Untergrenze nach oben korrigieren willst, musst du halt etwas dazurechnen und dies vom upperLimit abziehen.

    Grüssli



  • Oder schlichter

    Random random = new Random();
    uint upperLimit = 3000000000;
    uint number = (uint)(random.NextDouble() * upperLimit);
    


  • Dravere schrieb:

    Falls du die Untergrenze nach oben korrigieren willst, musst du halt etwas dazurechnen und dies vom upperLimit abziehen.

    Meinst du so?

    uint upperlimit = 300;
    uint lowerlimit = 5;
    uint number = (uint)(random.NextDouble() * uint.MaxValue) % upperlimit - lowerlimit;
    


  • Ich denke, eher

    uint upperlimit = 300;
    uint lowerlimit = 5;
    uint number = (uint)(random.NextDouble() * uint.MaxValue) % (upperlimit - lowerlimit) + lowerlimit;
    

    oder

    uint upperlimit = 300;
    uint lowerlimit = 5;
    uint number = (uint)(random.NextDouble() * (upperlimit - lowerlimit)) + lowerlimit;
    

  • Administrator

    @volkard,
    lol, stimmt. Eindeutig Zeit ins Nest zu gehen 🙂

    @C_Sharp,
    Mit dem was Volkard eingeführt hat und zusätzlich noch mit Erweiterungsmethoden, könnte man dies so machen:

    static class RandomExtension
    {
      public static uint NextUInt(this Random random, uint lower, uint upper)
      {
        return (uint)(random.NextDouble() * (upper - lower)) + lower;
      }
    }
    
    // ...
    Random random = new Random();
    uint number = random.NextUInt(1000, 5000);
    

    Grüssli



  • Funktioniert 1A, vielen dank 👍



  • Mal noch nen anderer Gedanke:

    Random rnd = new Random(); 
    uint number = rnd.Next() + rnd.Next();
    

    MfG SWW13



  • Oder man nimmt NextBytes() füllt sich damit nen 4 Byte großes Array und bastelt sich damit den uint zusammen



  • SWW13 schrieb:

    Mal noch nen anderer Gedanke:

    Random rnd = new Random(); 
    uint number = rnd.Next() + rnd.Next();
    

    MfG SWW13

    Das geht so nicht! Würfel mal mit 2 6er Würfeln und siehe was passiert... Die Wharscheinlichkeit dass die 7 fällt ist höher als die 2. Selbes Prinzip bei deiner These.


Anmelden zum Antworten