短字符串中的随机字符 - 可以影响随机性吗?

时间:2011-01-01 22:07:30

标签: math random probability

如果我的字符串非常短,请说(JavaScript):

var = "abcd";

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

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

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

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

var = "abcdabcdabcdabcdabcdabcd";

3 个答案:

答案 0 :(得分:4)

这不会改变任何事情。 Math.random()返回[0..1)之间的伪随机值。假设随机数生成器具有良好的质量,无论您将其范围映射到abc还是abcabcabc,都没有区别。

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

答案 1 :(得分:3)

我会说不。获得a,b,c或d的概率仍为25%。

答案 2 :(得分:3)

不,它不能。更糟糕的是,您将在12.5%的时间内收到错误,因为Math.round会将值从3.5到3.999999舍入为4。