<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.random-randomizer.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'random-randomizer.nextfloat.php',
    1 => 'Random\\Randomizer::nextFloat',
    2 => 'Renvoie un flottant s&eacute;lectionn&eacute; de l\'intervalle ouvert &agrave; droite [0.0, 1.0)',
  ),
  'up' => 
  array (
    0 => 'class.random-randomizer.php',
    1 => 'Random\\Randomizer',
  ),
  'prev' => 
  array (
    0 => 'random-randomizer.getint.php',
    1 => 'Random\\Randomizer::getInt',
  ),
  'next' => 
  array (
    0 => 'random-randomizer.nextint.php',
    1 => 'Random\\Randomizer::nextInt',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/random/random/randomizer/nextfloat.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="random-randomizer.nextfloat" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">Random\Randomizer::nextFloat</h1>
  <p class="verinfo">(PHP 8 &gt;= 8.3.0)</p><p class="refpurpose"><span class="refname">Random\Randomizer::nextFloat</span> &mdash; <span class="dc-title">Renvoie un flottant sélectionné de l&#039;intervalle ouvert à droite [0.0, 1.0)</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-random-randomizer.nextfloat-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><strong>Random\Randomizer::nextFloat</strong></span>(): <span class="type"><a href="language.types.float.php" class="type float">float</a></span></div>

  <p class="para rdfs-comment">
   Renvoie un flottant sélectionné de manière uniforme et équidistribué de l&#039;intervalle ouvert à droite
   de <code class="literal">0.0</code> jusqu&#039;à, mais sans inclure, <code class="literal">1.0</code>.
  </p>

  <p class="para">
   La chance pour un flottant retourné d&#039;être dans un sous-intervalle donné ouvert à droite
   est proportionnelle à la taille du sous-intervalle.

   Cela signifie que la chance pour un flottant d&#039;être <em>inférieur à</em> <code class="literal">0.5</code>
   est de 50 %, ce qui est égal à la chance pour un flottant d&#039;être <em>au moins</em> <code class="literal">0.5</code>.

   De même la chance pour un flottant d&#039;être dans l&#039;intervalle ouvert à droite de
   <code class="literal">0.2</code> jusqu&#039;à, mais sans inclure, <code class="literal">0.25</code>
   est exactement de 5 %.
  </p>

  <p class="para">
   Cette propriété permet de facilement utiliser <span class="methodname"><strong>Random\Randomizer::nextFloat()</strong></span>
   pour générer un booléen aléatoire avec une chance donnée en vérifiant si le flottant retourné est
   <em>inférieur à</em> une chance donnée.
  </p>

  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    Le domaine des flottants retournés par <span class="methodname"><strong>Random\Randomizer::nextFloat()</strong></span>
    est identique à celui de <code class="code">Randomizer::getFloat(0.0, 1.0, IntervalBoundary::ClosedOpen)</code>.
   </p>

   <p class="para">
    L&#039;implémentation interne de <span class="methodname"><strong>Random\Randomizer::nextFloat()</strong></span> est plus
    efficace.
   </p>
  </p></blockquote>

  <div class="caution"><strong class="caution">Attention</strong>
   <p class="para">
    Mettre à l&#039;échelle la valeur retournée à un intervalle différent en utilisant la multiplication
    ou l&#039;addition (une transformation affine) pourrait résulter en un biais
    dans la valeur résultante car les flottants ne sont pas également denses à travers la ligne
    des nombres. Comme toutes les valeurs ne peuvent pas être exactement représentées par un flottant, le
    résultat de la transformation affine pourrait également résulter en des valeurs en dehors
    de l&#039;intervalle demandé en raison d&#039;arrondis implicites.

    Une <a href="random-randomizer.getfloat.php#random-randomizer.getfloat.affine-transformation" class="link">explication détaillée</a>
    des problèmes avec la transformation affine est donnée dans la documentation
    pour <span class="methodname"><a href="random-randomizer.getfloat.php" class="methodname">Random\Randomizer::getFloat()</a></span>.
   </p>
   <p class="para">
    Utiliser <span class="methodname"><a href="random-randomizer.getfloat.php" class="methodname">Random\Randomizer::getFloat()</a></span> pour générer un
    flottant aléatoire dans un intervalle arbitraire. Utiliser <span class="methodname"><a href="random-randomizer.getint.php" class="methodname">Random\Randomizer::getInt()</a></span>
    pour générer un entier aléatoire dans un intervalle arbitraire.
   </p>
  </div>
 </div>


 <div class="refsect1 parameters" id="refsect1-random-randomizer.nextfloat-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <p class="para">Cette fonction ne contient aucun paramètre.</p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-random-randomizer.nextfloat-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="para">
   Un flottant sélectionné de manière uniforme dans l&#039;intervalle ouvert à droite
   (<code class="literal">IntervalBoundary::ClosedOpen</code>) [0.0, 1.0).

   <code class="literal">0.0</code> est une valeur de retour possible, <code class="literal">1.0</code> ne l&#039;est pas.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-random-randomizer.nextfloat-errors">
  <h3 class="title">Erreurs / Exceptions</h3>
  <ul class="itemizedlist">
   
 <li class="listitem">
  <span class="simpara">
   Tout <span class="classname"><a href="class.throwable.php" class="classname">Throwable</a></span>s lancé par la méthode <span class="methodname"><a href="random-engine.generate.php" class="methodname">Random\Engine::generate()</a></span>
   du <a href="class.random-randomizer.php#random-randomizer.props.engine" class="link"><code class="literal">Random\Randomizer::$engine</code></a> sous-jacent.
  </span>
 </li>

  </ul>
 </div>


 <div class="refsect1 examples" id="refsect1-random-randomizer.nextfloat-examples">
  <h3 class="title">Exemples</h3>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Exemple de <span class="methodname"><strong>Random\Randomizer::nextFloat()</strong></span></strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$r </span><span style="color: #007700">= new </span><span style="color: #0000BB">\Random\Randomizer</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// Le résultat du booléen sera vrai avec la chance donnée.<br /></span><span style="color: #0000BB">$chance </span><span style="color: #007700">= </span><span style="color: #0000BB">0.5</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$bool </span><span style="color: #007700">= </span><span style="color: #0000BB">$r</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">nextFloat</span><span style="color: #007700">() &lt; </span><span style="color: #0000BB">$chance</span><span style="color: #007700">;<br /><br />echo (</span><span style="color: #0000BB">$bool </span><span style="color: #007700">? </span><span style="color: #DD0000">"You won" </span><span style="color: #007700">: </span><span style="color: #DD0000">"You lost"</span><span style="color: #007700">), </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>Résultat de l&#039;exemple ci-dessus est similaire à :</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">You won</pre>
</div>
   </div>
  </div>

  <div class="example" id="example-2">
   <p><strong>Exemple #2 Mise à l&#039;échelle incorrecte en utilisant une transformation affine</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">final class </span><span style="color: #0000BB">MaxEngine </span><span style="color: #007700">implements </span><span style="color: #0000BB">Random\Engine </span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">generate</span><span style="color: #007700">(): </span><span style="color: #0000BB">string </span><span style="color: #007700">{<br />        return </span><span style="color: #DD0000">"\xff"</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$randomizer </span><span style="color: #007700">= new </span><span style="color: #0000BB">\Random\Randomizer</span><span style="color: #007700">(new </span><span style="color: #0000BB">MaxEngine</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$min </span><span style="color: #007700">= </span><span style="color: #0000BB">3.5</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$max </span><span style="color: #007700">= </span><span style="color: #0000BB">4.5</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// NE PAS FAIRE CECI:<br />//<br />// Cela affichera 4.5, malgré le fait que nextFloat() échantillonne<br />// à partir d'un intervalle ouvert à droite, qui ne retournera jamais 1.<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"Wrong scaling: %.17g"</span><span style="color: #007700">, </span><span style="color: #0000BB">$randomizer</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">nextFloat</span><span style="color: #007700">() * (</span><span style="color: #0000BB">$max </span><span style="color: #007700">- </span><span style="color: #0000BB">$min</span><span style="color: #007700">) + </span><span style="color: #0000BB">$min</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Correct:<br />// $randomizer-&gt;getFloat($min, $max, \Random\IntervalBoundary::ClosedOpen);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>L&#039;exemple ci-dessus va afficher :</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Wrong scaling: 4.5</pre>
</div>
   </div>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-random-randomizer.nextfloat-seealso">
  <h3 class="title">Voir aussi</h3>
  <ul class="simplelist">
   <li><span class="methodname"><a href="random-randomizer.getfloat.php" class="methodname" rel="rdfs-seeAlso">Random\Randomizer::getFloat()</a> - Renvoie un flottant uniform&eacute;ment s&eacute;lectionn&eacute;</span></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>