好的,我在网上找到了这个代码:
<?
$seed = floor(time()/(60*5));
srand($seed);
$item = rand(0,9);
echo $item;
?>
这将每5分钟生成一个随机数。我怎样才能让它产生到第十位?喜欢而不是5,它可以产生5.56或类似的东西?另外,我怎样才能使它生成一个接近旧数字的数字?例如:当前的数字是5.75。它会产生一个接近5.75的数字,如5.78而不是8.52?
谢谢,
答案 0 :(得分:2)
您可以使用以下内容获取子单位精度的随机数:
$item = rand(0,999) / 100;
这会给你0.00
到9.99
之类的内容。
您可以通过简单地添加一个小的签名偏移而不是生成一个全新的数字来获得前一个关闭的数字,例如:
$addthing = (rand(0,10) - 5) / 100;
$item = $item + $addthing;
这将在前一个号码的0.05
内提供一个新号码。如果你想确保号码仍然在有效范围内,你必须&#34;钳制&#34;事后呢。换句话说,如果$item
为0.00
且$addthing
变为-0.02
,则您显然会以负数结尾。
你如何处理这取决于你,但最简单的方法可能只是检查$item
的最终值,如果它超出该范围,则强制它回到正确的范围。
一个很好的片段将是:
<?php
$item = rand(0,999) / 100;
echo $item . "\n";
$addthing = (rand(0,10) - 5) / 100;
$item = $item + $addthing;
if (($item < 0) || ($item > 9.99)) {
$item = $item - $addthing * 2;
}
echo $item . "\n";
?>
尽管在功能方面可能更好。请注意if
语句,该语句检查最终值是否在有效范围之外,并通过减去两个$addthing
值来修复该值。实际上,这意味着如果添加会导致超出范围,则会相反减去它。