<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <refentry xml:id="function.rand" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>rand</refname> <refpurpose>Generate a random integer</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>int</type><methodname>rand</methodname> <void/> </methodsynopsis> <methodsynopsis> <type>int</type><methodname>rand</methodname> <methodparam><type>int</type><parameter>min</parameter></methodparam> <methodparam><type>int</type><parameter>max</parameter></methodparam> </methodsynopsis> <simpara> If called without the optional <parameter>min</parameter>, <parameter>max</parameter> arguments <function>rand</function> returns a pseudo-random integer between 0 and <function>getrandmax</function>. If you want a random number between 5 and 15 (inclusive), for example, use <literal>rand(5, 15)</literal>. </simpara> &caution.cryptographically-insecure; <note> <simpara> On some platforms (such as Windows), <function>getrandmax</function> is only 32767. If you require a range larger than 32767, specifying <parameter>min</parameter> and <parameter>max</parameter> will allow you to create a range larger than this, or consider using <function>mt_rand</function> instead. </simpara> </note> <note><simpara>As of PHP 7.1.0, <function>rand</function> uses the same random number generator as <function>mt_rand</function>. To preserve backwards compatibility <function>rand</function> allows <parameter>max</parameter> to be smaller than <parameter>min</parameter> as opposed to returning &false; as <function>mt_rand</function>.</simpara> </note> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>min</parameter></term> <listitem> <para> The lowest value to return (default: 0) </para> </listitem> </varlistentry> <varlistentry> <term><parameter>max</parameter></term> <listitem> <para> The highest value to return (default: <function>getrandmax</function>) </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> A pseudo random value between <parameter>min</parameter> (or 0) and <parameter>max</parameter> (or <function>getrandmax</function>, inclusive). </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.2.0</entry> <entry> <function>rand</function> <link linkend="migration72.incompatible.rand-mt_rand-output">has received a bug fix</link> for a modulo bias bug. This means that sequences generated with a specific seed may differ from PHP 7.1 on 64-bit machines. </entry> </row> <row> <entry>7.1.0</entry> <entry> <function>rand</function> <link linkend="migration71.incompatible.rand-srand-aliases">has been made</link> an alias of <function>mt_rand</function>. </entry> </row> </tbody> </tgroup> </informaltable> </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><function>rand</function> example</title> <programlisting role="php"> <![CDATA[ <?php echo rand() . "\n"; echo rand() . "\n"; echo rand(5, 15); ?> ]]> </programlisting> &example.outputs.similar; <screen> <![CDATA[ 7771 22264 11 ]]> </screen> </example> </para> </refsect1> <refsect1 role="notes"> &reftitle.notes; <warning> <para> <parameter>min</parameter> <parameter>max</parameter> range must be within the range <function>getrandmax</function>. i.e. (<parameter>max</parameter> - <parameter>min</parameter>) <= <function>getrandmax</function> Otherwise, <function>rand</function> may return poor-quality random numbers. </para> </warning> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>srand</function></member> <member><function>getrandmax</function></member> <member><function>mt_rand</function></member> <member><function>random_int</function></member> <member><function>random_bytes</function></member> <member><function>openssl_random_pseudo_bytes</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 -->