我想用这些要求显示1,000到1,999之间的随机数
到目前为止我发现了:
<?php
srand(floor(date('U')) / (60*60*24*7));
$num = 100;
$a = rand() % $num;
echo $a;
echo "<br>";
$b = rand() % $num;
echo $b;
echo "<br>";
$c = rand() % $num;
echo $c;
echo "<br>";
$d = rand() % $num;
echo $d;
echo "<br>";
$e = rand() % $num;
echo $e;
?>
答案 0 :(得分:1)
通过创建适当的种子,您可以执行此操作而无需存储结果。
您需要获得ISO-8601周编号年份和周数。您可以使用date('oW')
生成此内容。今天(直到下周一)将返回201638
。
W
的值每周一更改,而o
的值每年都会更改,除非当前的W
属于前一年或明年 - 在这种情况下使用该年份。 (换句话说,由于新的一年,年/周组合在一周中不会改变。)
一旦你有了这个组合,就可以使用它来为随机数生成器播种:
mt_srand((int)date('oW'));
然后在您的限制之间拉出随机数。使用固定种子,这将为每个访问者产生相同的值:
$number = mt_rand(1000, 1999);
然后格式化它以添加千位分隔符和输出:
echo number_format($number);
一起跳过中间变量:
mt_srand((int)date('oW'));
echo number_format(mt_rand(1000, 1999));
今天输出1,331
。
没有必要将生成的数字存储在任何地方,因为这可以为每个访问者可靠地重新生成相同的数字,每天直到下周一 - 此时您将获得一个新的种子,因此获得一个新的随机数(直到下一个星期一,如此。)
有关所用功能的更多信息,请参阅PHP manual: