Zufallszahl bei Update in Tabelle schreiben
Rolli
- mysql
0 Tabellenkalk0 Rolli0 Der Martin0 JürgenB
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
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
was spricht dagegen, deine Zahl mit 100 zu multiplizieren, und dann zu runden?
Danke für den Tipp
SET total = (rand()*100)
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
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
Hallo,
Runden ist bei Zufallszahlen meist eine schlechte Idee,
ah, jetzt erinnere ich mich auch wieder an eine der möglichen Stolperfallen...
Gruß
Kalk
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.
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