【问题标题】:Random character from a short string - can the randomness be influenced?短字符串中的随机字符 - 随机性会受到影响吗?
【发布时间】:2011-01-01 22:07:29
【问题描述】:

如果我有一个很短的字符串,比如说 (JavaScript):

var = "abcd";

我想从中获取一个随机字符,我可以使用:

var random_char = str.charAt( Math.floor(Math.random() * str.length) );

现在Math.floor(Math.random() * str.length) 返回[0..3] 范围内的随机数。

是否可以通过乘以字符串来增加返回字符的感知随机性,即通过有效地增加随机数的范围?

var = "abcdabcdabcdabcdabcdabcd";

【问题讨论】:

    标签: math random probability


    【解决方案1】:

    这不会改变任何事情。 Math.random() 返回一个介于 [0..1) 之间的伪随机值。假设随机数生成器质量很好,将其范围映射到 abcabcabcabc 都不会产生影响。

    如果Math.random() 返回质量非常低的随机数(即人类可以通过查看数字序列来发现它们背后的逻辑),你的策略确实会增加感知的“随机性” '。但这无关紧要,因为 JavaScript 运行时通常不是猴子编写的。

    【讨论】:

    • 是的,绝对有道理。愚蠢的问题,我现在想想。在浏览器中编写一个快速的现实检查比编写那个问题花费的时间更少。 oO
    【解决方案2】:

    我会说不。得到 a、b、c 或 d 的概率仍然是 25%。

    【讨论】:

    • 真的吗?鸽巢原理如何应用?这里没有比洞更多的鸽子。
    【解决方案3】:

    不,它不能。更糟糕的是,您在 12.5% 的情况下会收到错误,因为 Math.round 会将 3.5 到 3.999999 的值四舍五入到 4。

    【讨论】:

      猜你喜欢
      • 2017-05-20
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2014-02-09
      相关资源
      最近更新 更多