【问题标题】:Math.random() in Javascipt giving quite non-random looking distributionJavascript 中的 Math.random() 给出了相当非随机的分布
【发布时间】:2021-04-28 16:06:28
【问题描述】:

我正在进行一项研究,该研究使用以下 javascript 将参与者重定向到 8 个随机网站之一(在其他空白的 HTML 页面上)。

奇怪的是每个站点的参与者分布情况。到目前为止,我有大约 64 名参与者,我知道真正的随机性并不意味着每个站点应该有 8 个访问者。但是,其中一个站点只有一个重定向(站点编号 5),而另一个站点有 19 个(站点编号 1)。其他的都接近 8 次访问。

我只是想检查一下我没有用这么简单的代码犯任何愚蠢的错误/假设。我想不出任何理由为什么它更有可能产生“1”而不太可能产生“5”。

难道这只是随机数生成的运气,在样本量较小且有 8 种可能性的情况下,某些网站的访问次数可能比其他网站多 19 次?

任何意见将不胜感激。

<script type="text/javascript">

function randomlinks(){
        var myrandom=Math.floor(Math.random()*8)
        var links=new Array()
        links[0]="[website0 name here]"
        links[1]="[website1]"
        links[2]="[website2]"
        links[3]="[website3]"
        links[4]="[website4]"
        links[5]="[website5]"
        links[6]="[website6]"
        links[7]="[website7]"
     
        window.location=links[myrandom]
        }
    
    randomlinks();
</script>

【问题讨论】:

  • Math.random 是伪随机的
  • 考虑使用数组文字代替吗? var links = ["[website0]","[website1]","[website2]", ...]?
  • AFAIK 在任何编程语言中都没有“真正的随机性”。这就是为什么人们使用外部资源来实现真正的随机性cloudflare.com/learning/ssl/lava-lamp-encryption
  • 你没有犯“愚蠢的错误”。随机数只是......好吧,随机的。
  • 对于您的用例来说没问题。 Math.random 是均匀分布的。你观察到的纯粹是运气。

标签: javascript random


【解决方案1】:

根据 cmets,看起来有点奇怪的重定向数字似乎是偶然的,而不是代码中的系统性问题。再次感谢大家!

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 2017-12-04
    • 2011-01-21
    • 2023-03-05
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    相关资源
    最近更新 更多