Heim > Datenbank > MySQL-Tutorial > Tipps für die Verwendung der MySQL-Zufallszahlenfunktion für spezifizierte Bereiche rand()_MySQL

Tipps für die Verwendung der MySQL-Zufallszahlenfunktion für spezifizierte Bereiche rand()_MySQL

WBOY
Freigeben: 2016-10-09 08:33:38
Original
1746 Leute haben es durchsucht

Die Formel lautet wie folgt:

rand() * (y-x) x

Jeder, der PHP studiert, weiß, dass die Zufallsfunktion rand oder mt_rand einen Parameter übergeben kann, um eine zufällige Ganzzahl zwischen 0 und dem Parameter zu generieren, oder dass sie zwei Parameter übergeben kann, um eine zufällige Ganzzahl zwischen den beiden Parametern zu generieren.
In MySQL kann die Zufallszahlenfunktion rand keine Parameter übergeben. Die generierte Gleitkommazahl liegt zwischen 0 und 1. Was ist, wenn wir in MySQL eine zufällige Ganzzahl größer als 1 generieren müssen?
Diese Art von Anforderung ist nicht unbekannt. Beispielsweise muss das Artikelsystem, an dem wir arbeiten, eine ganze Zahl innerhalb eines bestimmten Bereichs betrügen und zur Anzahl der Aufrufe des Artikels hinzufügen.

Angenommen, Sie müssen eine zufällige Ganzzahl zwischen 234 und 5678 generieren. So erreichen Sie dies in MySQL.

Wir können den generierten Wert von Rand unter MySQL nicht ändern, aber wir können unsere Bedürfnisse ändern,

1. Das Minimum, das wir brauchen, ist 234 und das Maximum ist 5678. Das von Rand generierte Minimum ist 0 und das Maximum ist 1. Subtrahieren Sie 234 von der Zahl, die wir brauchen?

Die Mindestzahl ist 234 - 234 = 0 und die Höchstzahl ist 5678 - 234 = 5444. Hey, hervorheben, die Mindestzahl, die wir benötigen, stimmt mit der von Rand generierten Mindestzahl überein.
Wir müssen die Funktion nur Zufallszahlen von 0 bis 5444 generieren lassen und dann 234 hinzufügen, was unsere ursprüngliche Anforderung ist.
Unsere ursprüngliche Anforderung wird durch einen Pseudoausdruck beschrieben, der
wäre Rund(rand(0,5444) 234)

2. Jetzt müssen wir nur noch einen Weg finden, unsere Bedürfnisse so zu ändern, dass die Mindestanzahl unverändert bei 0 bleibt und die Höchstanzahl auf 1 wechselt,
Offensichtlich ist 5444 minus 5443 1, aber in diesem Fall ist die Mindestzahl eine negative Zahl.
Die Mindestzahl ist immer noch 0 und die Höchstzahl ist 1. Es ist zu einfach, 5444 / 5444 = 1, 0 /5444 = 0
Der Pseudoausdruck der ursprünglichen Anforderung lautet nun:
Rundung (rand(0,1) * 5444 234)
3. Entfernen Sie die Parameter des Pseudoausdrucks und schreiben Sie ihn auf die gleiche Weise wie rand unter MySQL, mit dem gleichen Effekt. Für die Rundungsfunktion verwenden wir Rounding ROUND
Daher ist der endgültige wahre MySQL-Ausdruck unserer ursprünglichen Anforderung
ROUND(RAND() * 5444 234)

Um die Ideen zusammenzufassen:
1. Vergleichen Sie den Unterschied zwischen rand(x, y) und rand(0,1).
2. Transformieren Sie rand(x,y) nach und nach in rand(0,1)
rand(x,y)
= rand(0, (y-x)) x
= rand(0/(y-x), (y-x)/(y-x)) * (y-x) x
= rand() * (y-x) x

Dies ist ein sehr einfacher mathematischer arithmetischer Ausdruck. Anhand eines einfachen Beispiels werde ich über einige grundlegende Techniken von Algorithmen sprechen: Reduzieren Sie die Anforderungen, damit das Wissen, das Sie haben, die Anforderungen erfüllen kann.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage