【问题标题】:how to select random index based on the current time如何根据当前时间选择随机索引
【发布时间】:2014-11-27 06:32:56
【问题描述】:

给定一个长度为 N 的数组,如何根据当前时间选择一个随机索引。基本上我想根据当前时间生成一个从 0 到 N 的随机整数。这甚至可以在数学上做到吗?

【问题讨论】:

  • 为什么一定要根据时间?而不仅仅是随机的?
  • 因为我希望它每 30 分钟选择相同的数字
  • time % N 会起作用吗?
  • 是的,使用 UNIX 时间戳 % N 肯定可以工作,但它会每秒更改索引,我希望它每 X 分钟更改一次

标签: php algorithm


【解决方案1】:

您可以使用来自time() 的派生值作为随机数生成器的种子:

mt_srand(time() / 30 / 60); // reseed every 30 minutes

echo mt_rand(0, N);

如果没有随机数生成器,您可以简单地使用模数:

echo (time() / 30 / 60) % N;

请注意,mt_rand() 输出可能包含 N 本身,而模块版本不包含。

【讨论】:

  • 我认为这比我的回答效率高一点;)
【解决方案2】:

想想你正在寻找这样的东西:

<?php

    $numbers = array(1,2,3,4,5,6,7,8,9,10);
    $random = date('i')/5 % count($numbers);
    echo  $random . "<br />";
    echo $numbers[$random];

?>

【讨论】:

  • 每秒都会改变..我希望每 X 分钟改变一次..我如何在这个等式中做到这一点?
  • @adit ?你试过了吗?它每分钟都在变化!因为 date('i') 会返回分钟!所以每分钟计算都会改变!
  • 是的,这太快了,我希望能够控制它。我希望它每 10 分钟、15 分钟等更改一次
  • @adit 所以你希望每 5 分钟有一个随机值,每 30 分钟相同?
  • 好的,@Rizier123,我想我明白你的意思了。 OP 可能需要进一步澄清他的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 2019-08-13
相关资源
最近更新 更多