Rolli: Zufallszahl bei Update in Tabelle schreiben

Ich würde gerne ein Feld mit einer zufälligen Zahl befüllen. Es klappt, allerdings nus bedingt. Es sind zufällige Zahlen zwischen 0 und 1, sie sollten aber zwischen 0 und 100 liegen.

UPDATE bundesligae SET total = rand()limit 100

Wer weis da weiter?

Rolli

  1. Hallo,

    Ich würde gerne ein Feld mit einer zufälligen Zahl befüllen.

    Abgesehen davon, dass die Sache mit den Zufallszahlen einige Stolperfallen bieten kann:

    Es sind zufällige Zahlen zwischen 0 und 1, sie sollten aber zwischen 0 und 100 liegen.

    was spricht dagegen, deine Zahl mit 100 zu multiplizieren, und dann zu runden?

    Gruß
    Kalk

    1. was spricht dagegen, deine Zahl mit 100 zu multiplizieren, und dann zu runden?

      Danke für den Tipp

      SET total = (rand()*100)

    2. Hi,

      Ich würde gerne ein Feld mit einer zufälligen Zahl befüllen.

      Es sind zufällige Zahlen zwischen 0 und 1, sie sollten aber zwischen 0 und 100 liegen.

      was spricht dagegen, deine Zahl mit 100 zu multiplizieren

      vermutlich nichts. Das wäre die übliche Methode.

      und dann zu runden?

      Könnte man aus rein akademischen Beweggründen tun - aber warum? Wenn es eine Ganzzahl sein soll, dann ist der Feldtyp passend dazu gewählt (also irgendein Integer-Typ) und das Runden ergibt sich von allein.

      So long,
       Martin

    3. Hallo

      … und dann zu runden?

      Runden ist bei Zufallszahlen meist eine schlechte Idee, da dann die kleinste und größte Zahl nur mit der halben Wahrscheinlichkeit gezogen werden. Ich empfehle hier floor.

      Gruß Jürgen

      1. Hallo,

        Runden ist bei Zufallszahlen meist eine schlechte Idee,

        ah, jetzt erinnere ich mich auch wieder an eine der möglichen Stolperfallen...

        Gruß
        Kalk

      2. Hi,

        … und dann zu runden?

        Runden ist bei Zufallszahlen meist eine schlechte Idee, da dann die kleinste und größte Zahl nur mit der halben Wahrscheinlichkeit gezogen werden.

        kommt drauf an, wie man rundet.

        Ich empfehle hier floor.

        Ja, zum Beispiel. Das ist ja auch eine Art von Runden: Konsequentes Abrunden. Das gleiche passiert bei der impliziten Konvertierung zu Integer.

        Wichtig ist noch zu wissen, dass die von rand() gelieferten Zufallszahlen immer kleiner als 1 sind, der Ausdruck rand()*100 also nie den Wert 100 einschließt. Ein nachfolgendes floor() führt dazu, dass die erzeugten Zufallszahlen im Bereich von 0..99 liegen (je einschließlich), aber nie 100 erreichen. Das kann gewollt sein oder auch nicht - nur wissen sollte man es.

        So long,
         Martin