php-doc-en/reference/math/functions/mt-srand.xml
2019-02-18 05:42:50 +00:00

173 lines
4.7 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.mt-srand">
<refnamediv>
<refname>mt_srand</refname>
<refpurpose>Seeds the Mersenne Twister Random Number Generator</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>void</type><methodname>mt_srand</methodname>
<methodparam choice="opt"><type>int</type><parameter>seed</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>mode</parameter><initializer>MT_RAND_MT19937</initializer></methodparam>
</methodsynopsis>
<para>
Seeds the random number generator with
<parameter>seed</parameter> or with a random value
if no <parameter>seed</parameter> is given.
</para>
&note.randomseed;
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>seed</parameter></term>
<listitem>
<para>
An arbitrary <type>integer</type> seed value.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
Use one of the following constants to specify the implementation of the algorithm to use.
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Constant</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry><constant>MT_RAND_MT19937</constant></entry>
<entry>
Uses the fixed, correct, Mersenne Twister implementation, available as of PHP 7.1.0.
</entry>
</row>
<row>
<entry><constant>MT_RAND_PHP</constant></entry>
<entry>
Uses an incorrect Mersenne Twister implementation which was used as the default up till PHP 7.1.0.
This mode is available for backward compatibility.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.1.0</entry>
<entry>
<function>srand</function> <link linkend="migration71.incompatible.rand-srand-aliases">has been made</link> an alias of <function>mt_srand</function>.
</entry>
</row>
<row>
<entry>7.1.0</entry>
<entry>
<function>mt_rand</function> <link linkend="migration71.incompatible.fixes-to-mt_rand-algorithm">has been updated</link> to use the fixed, correct, version of
the Mersenne Twister algorithm. To fall back to the old behaviour, use <function>mt_srand</function> with <constant>MT_RAND_PHP</constant> as the second parameter.
</entry>
</row>
<row>
<entry>5.2.1</entry>
<entry>
The Mersenne Twister implementation in PHP now uses a new seeding
algorithm by Richard Wagner. Identical seeds no longer produce the same
sequence of values they did in previous versions. This behavior is not
expected to change again, but it is considered unsafe to rely upon it
nonetheless.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>mt_srand</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
// seed with microseconds
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return $sec + $usec * 1000000;
}
mt_srand(make_seed());
$randval = mt_rand();
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>mt_rand</function></member>
<member><function>mt_getrandmax</function></member>
<member><function>srand</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->