In PHP ist das Generieren von Zufallszahlen eine häufige Operation, insbesondere wenn es sich um Anwendungsszenarien wie Spieleentwicklung, Kryptographie und Datensimulation handelt. PHP liefert mehrere Funktionen, die zufällige Zahlen erzeugen, wie z. B. Rand () , mt_rand () und random_int () . Um die Qualität und Effizienz der generierten Zufallszahlen zu verbessern, kann die rationale Verwendung der Srand () -Funktion eine Schlüsselrolle spielen.
In diesem Artikel wird die Funktion srand () vorgestellt und besprochen, wie sie in Verbindung mit anderen Zufallszahlfunktionen verwendet werden, um bessere Ergebnisse zu erzielen.
In PHP wird die Funktion srand () verwendet, um den Samen des Zufallszahlengenerators einzustellen. Der Saatgutwert bestimmt den Ausgangspunkt der Zufallszahlenerzeugung. Mit dem gleichen Saatgutwert sind die Zufallszahlsequenzen jedes Mal gleich, was für das Debuggen und Testen sehr nützlich ist.
Rand () und mt_rand () erzeugen beide Zufallszahlen basierend auf dem internen Pseudo-Random-Zahlengenerator, und Srand () wird verwendet, um den Samen dieses Generators festzulegen. Wenn srand () nicht explizit aufgerufen wird, verwendet PHP den aktuellen Zeit- oder Systemzustand als Saatgutwert, sodass die Abfolge der bei jedem Lauf generierten Zufallszahlen unterschiedlich ist.
Rand () ist eine der am häufigsten verwendeten Funktionen in PHP, um Zufallszahlen zu erzeugen. Es verwendet das von Srand () festgelegte Saatgut, um Pseudo-Random-Zahlen zu erzeugen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Samen setzen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-number">12345</span></span><span>);
</span><span><span class="hljs-comment">// Erzeugen a0ankommen100Zufällige Zahl zwischen</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">rand</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>In diesem Beispiel setzt Srand (12345) den Generatorsamen auf 12345, und Rand (0, 100) generiert eine Zufallszahl zwischen 0 und 100. Jedes Mal, wenn der Code ausgeführt wird, sind die generierten Zufallszahlen gleich, weil wir einen festen Saatgut festlegen.
PHP liefert auch die Funktion mt_rand () , die auf dem Mersenne -Twister basiert, der ein effizienterer und zufälligerer Algorithmus ist. Daher wird empfohlen, mt_rand () anstelle von Rand () in der tatsächlichen Entwicklung zu verwenden.
Obwohl MT_RAND () den Samen auch mit SRAND () festlegt, sind die Qualität und Geschwindigkeit der von ihm erzeugten zufälligen Zahlen im Allgemeinen besser als Rand () .
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Samen setzen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-number">12345</span></span><span>);
</span><span><span class="hljs-comment">// verwenden mt_rand() Zufällige Zahlen generieren</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Wie Rand () wird auch mt_rand () von dem von Srand () festgelegten Samen betroffen.
Für Szenarien, in denen hohe Sicherheitsanforderungen erforderlich sind, führt PHP 7 die Funktion random_int () vor, die Zufallszahlen auf Verschlüsselungsebene liefern kann. Im Gegensatz zu Rand () und mt_rand () erfordert Random_int () keine explizite Verwendung von srand () , um den Saatgut festzulegen, da sie auf zufällige Quellen von höherer Qualität beruht (z. B. vom Betriebssystem bereitgestellte Zufallszahlengeneratoren).
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// verwenden random_int() Zufällige Zahlen generieren</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">random_int</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Random_int () generiert zufällige Zahlen, die unvorhersehbar sind und eine stärkere Sicherheit haben. Daher sollte es zuerst in Kryptographie oder anderen Anwendungen verwendet werden, die eine hohe Sicherheit erfordern.
In der tatsächlichen Entwicklung wird Srand () häufig in Verbindung mit anderen Zufallszahlfunktionen verwendet, um unterschiedliche Anforderungen zu erfüllen. Wenn Sie den Saatgut nicht festlegen, sind die von Rand () und mt_rand () generierten Zufallszahl -Sequenzen möglicherweise nicht jedes Mal ideal, insbesondere wenn Sie einige spezifische zufällige Ergebnisse reproduzieren müssen.
Durch ordnungsgemäßes Einstellen des Samens mit Srand () kann die Wiederholbarkeit von Zufallszahlen sichergestellt werden, was das Debuggen und Tests erleichtert.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Samen setzen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">srand</span></span><span>(</span><span><span class="hljs-number">98765</span></span><span>);
</span><span><span class="hljs-comment">// 联合verwenden mt_rand() Und random_int()</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mt_rand</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>; </span><span><span class="hljs-comment">// verwenden mt_rand() Zufällige Zahlen generieren</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">random_int</span></span><span>(</span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>; </span><span><span class="hljs-comment">// verwenden random_int() Safe Zufallszahlen generieren</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>In diesem Beispiel haben wir zuerst den Samen Srand (98765) festgelegt und dann mt_rand () bzw. random_int () verwendet, um Zufallszahlen zu generieren. Mit der Kombination von mt_rand () und random_int () kann die Anforderungen an die Zufallszahl in verschiedenen Szenarien erfüllt werden.
Die Funktion srand () ist ein Schlüsselwerkzeug zur Steuerung der Samen des PHP -Zufallszahlengenerators. In Kombination mit Funktionen wie Rand () und mt_rand () kann dies die Kontrollierbarkeit und Reproduzierbarkeit von Zufallszahlen sicherstellen. Für hohe Sicherheitsanwendungen wird jedoch Random_int () empfohlen, was nicht von Srand () abhängt und eine stärkere Zufälligkeit bietet.
Durch die Auswahl der entsprechenden Funktion und das korrekte Einstellen des SEED beim Erzeugen von Zufallszahlen kann die Qualität und Sicherheit der Erzeugung von Zufallszahlen gleichzeitig verbessert werden und gleichzeitig die Leistung verbessert.