Comment puis-je régénérer une décimale aléatoire de -0,0010 à 0,0010 avec PHP rand () code> ou une autre méthode? P>
6 Réponses :
.
$val = (rand(0,20)-10)/10000;
Maintenant, vous êtes vraiment limité à 21 valeurs possibles. Mais peut-être que c'est ce que Benmsia veut ...
Ouais. Merci. Les plus grandes valeurs générées seront meilleures, mais s'il n'y a pas de solution valide, j'enlèdera temporairement à cette nouvelle solution. Merci Nathan.
Cela reviendra tout -0.001 code> et +0.001 code>
Vous n'avez pas besoin de ces supports.
Ouais sûr, mais ils ne font pas mal non plus
Bonjour merci pour votre contribution. Mais il a généré une valeur de -ve 2.plus pour une raison inconnue. Vous avez une idée?
Qu'entendez-vous par «A -ve 2.Plus de valeur»
Diviser rand () code> par numéro aléatoire maximal, multipliez-le par la plage et ajoutez le numéro de départ: <?php
// rand()/getrandmax() gives a float number between 0 and 1
// if you multiply it by 0.002 you'll get a number between 0 and 0.002
// add the starting number -0.001 and you'll get a number between -0.001 and 0.001
echo rand()/getrandmax()*0.002-0.001;
?>
Salut Harmen, je ne sais pas quelle raison pour votre formule a trouvé un bug là-bas. Il a généré une valeur de -ve 2.plus .. U a une idée? Merci
Je suppose que vous avez trouvé un numéro proche de zéro, comme -4.7090060121464e-5 code>. Cela signifie -4,7 * 10 ^ -5 code> qui est -0.000047 code>
$randselect=rand(0,(array_sum($adarray)*100000000));
$cumilativevalue=0;
foreach ($adarray as $key => $value) {
$cumilativevalue=$cumilativevalue+$value*100000000;
if($randselect<$cumilativevalue){$selectedad=$key;break;}
}
Cela utilise deux appels rands () mais je pense que la lisibilité le compose à dix fois. La première partie rend A -1 ou +1. La deuxième partie peut être quelque chose entre 0 et votre limite pour +/- numéros.
$start = microtime();
$loopCount = 50000;
for($i=0;$i<$loopCount;$i++)
{
(0*2-1)*rand(0, 100);
}
$end = microtime();
echo "Timing: ", ((($end-$start)*1000.0)/((float)$loopCount)), " milliseconds.";
float aléatoire avec une décimale entre -1,1 p>
$ aléatoire = rond ((rand (0,1) - flottval ('0.'. Rand (0,9) .rand (0,9))), 1); code> < / p>
N'est-ce que seulement un espace de 21 chiffres?
@Fosco c'est un espace de nombres infinis