1. Foren
  2. Kommentare
  3. OpenSource-Forum
  4. Alle Kommentare zum Artikel
  5. › Sicherheit: Glibc unterstützt…

Interessant ist arc4random_uniform()

  1. Thema

Neues Thema


  1. Interessant ist arc4random_uniform()

    Autor: /mecki78 27.07.22 - 18:27

    arc4random() ist gar nicht so interessant, bis auf die Tatsache, dass man die Funktion nicht "seed'en" muss (rand() und random() muss man erst einmalig seed'en und man weiß nie, ob es schon geseeded wurde oder nicht), interessant ist arc4random_uniform(), denn diese Funktion liefert Zufallszahlenwerte zwischen 0 und einer Obergrenze, die gleichmäßig verteilt sind.

    Ansonsten sieht man nämlich im Code oft so etwas

    long rnd = random() % UPPER_LIMIT;

    Und das ist sehr problematischer Code, denn dieser Code erzeugt zwar eine Zufallszahl zwischen 0 und UPPER_LIMIT (0 inklusive, UPPER_LIMIT exklusive), aber diese Zahl ist nicht gleichmäßig verteilt, d.h. bestimmte Zahlen kommen mit einer deutlich höheren Wahrscheinlichkeit vor als andere Zahlen.

    Sicherlich ist random() kein sehr guter Zufallsgenerator, aber durch die Modulo-Operation wird daraus definitiv ein sehr schlechter Zufallsgenerator, egal wie gut random() alleine ist. Und es gibt durchaus Situationen, wo man nicht unbedingt Zufallszahlen in kryptographischer Qualität braucht, aber man braucht schon halbwegs gleichmäßig verteilte Zahlen und hier bietet random()/rand() eben nichts brauchbares für an.

    /Mecki

  2. Re: Interessant ist arc4random_uniform()

    Autor: cwasser 28.07.22 - 00:08

    Zu der Thematik fielen mir gleich "pcg-random dot org slash posts slash bounded-rands dot html" von Melissa O'Neill und "lemire dot me slash blog slash 2019 slash 06 slash 06 slash nearly-divisionless-random-integer-generation-on-various-systems" von Daniel Lemire ein.
    Sehr lesenswerte Artikel!
    Auch interessant ist "docs dot microsoft dot com slash en-us slash events slash goingnative-2013 slash rand-considered-harmful" von STL, welches über häufige Fehler im Zusammenhang mit Zufallszahlen im C++-Kontext aufklärt.
    (Kann leider keine Links Posten, daher so, sorry)

  1. Thema

Neues Thema


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. Senior Architect Microsoft Azure (m/w/d)
    operational services GmbH & Co. KG, Frankfurt am Main, Berlin, Dresden, München
  2. Mitarbeiter*in Training / Helpdesk (m/w/d)
    Universitätsmedizin der Johannes Gutenberg-Universität Mainz, Mainz
  3. Informatikerin bzw. Informatiker (w/m/d) mit Bachelor oder Fachhochschul-Diplom
    Bundeskartellamt, Bonn
  4. Linuxadministrator (m/w/d)
    Universitätsmedizin der Johannes Gutenberg-Universität Mainz, Mainz

Detailsuche


Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Hardware-Angebote


Haben wir etwas übersehen?

E-Mail an news@golem.de