【问题标题】:Random generator click one per day随机生成器每天点击一个
【发布时间】:2023-03-29 19:41:01
【问题描述】:

我通过单击一个简单的链接添加了一个带有随机内容(文本 + 图像)的模式,效果很好! 但是现在我被卡住了,因为我希望它在 24 小时内显示相同的内容,无论用户点击链接多少次......每天的报价:这将是我避免用户大量点击的重点。有人可以帮助我吗?

(function() {
  var quotes = [{
    text: "...",
    img: "..."
  }, {
    text: "...",
    img: "...",
  }];
  var quote = quotes[Math.floor(Math.random() * quotes.length)];
  document.getElementById("quote").innerHTML =
    '<p>' + quote.text + '</p>' +
    '<img src="' + quote.img + '">';
})();

【问题讨论】:

  • 为什么不使用一些本地存储或cookies(过期)?存储用户选择。因此,您可以随时检查首选存储中的值,如果它存在且尚未过期,则显示该值(并可能禁用链接)。
  • 只是为了清楚;你想记住每个用户的选择吗?
  • 例如,Math.floor(Date.now() / 86400) % quotes.length 保证在一天内总是返回相同的报价。
  • @EmanuelVintilă 效果很好!现在我每个用户都有不同的随机帖子,但永远一样!明天我会再次点击查看,但我认为这是诀窍!谢谢你,非常非常非常!我已经被困在那里好几个小时了!谢谢! ♥

标签: javascript random generator


【解决方案1】:

我想在你的情况下伪随机就足够了。

所以你可以使用类似的东西:

Random generator = new Random(seed);

而不是 Math.random() 并且对于种子,您将使用当前日期。这样,选择看起来是随机的,但在当天也是固定的。

如果您需要为每个用户进行伪随机选择,您也可以将用户名添加到种子中。

【讨论】:

  • 我知道您的问题被标记为javascriptjavaphp。我一直在寻找未回答的 Java 问题,结果发现了误导性标签。
  • 真的很抱歉。这是我关于 Stack Overflow 的第一个问题,我还在学习网站和编码,所以我为误导性标签道歉。你能教/告诉我如何准确地实现随机生成器和我的代码的当前日期......?我什至不知道从哪里开始...非常感谢您的帮助和耐心。
  • 我不认为有一个“随机”数字生成器可以用种子初始化以在 JavaScript 中返回可预测的结果。通常无论如何都会避免使用这些伪随机数生成器,因为它们在密码学上并不安全(在您的情况下这无关紧要)。我认为您必须像其他人建议的那样使用一些存储空间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-28
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多