【发布时间】:2019-04-29 08:41:46
【问题描述】:
所以我有 position: absolute 的元素,然后我使用 Math.random() 设置它们的 left:#random 和 top:#random 位置。
然而,一件非常奇怪的事情正在发生。它应该是完全随机的,因此它们应该完全随机放置。然而,一次又一次,它们非常紧密地放在一起。而不是分散开来。
这是我用来生成它们的代码:
const Clouds = function(props) {
const clouds = []
for (let i = 0; i < props.cloudNum; i++) {
const style = {
position: 'absolute',
height: 50 * props.cloudSize + 'px',
top: Math.random() * 100 + '%',
left: Math.random() * 100 + '%',
}
clouds.push(<Cloud key={i} style={style} />)
}
return <div className={props.side}>{clouds}</div>
}
Math.random 是否有时间分量,因为它们是按顺序生成的,所以它们的随机数相似?
【问题讨论】:
-
这种情况总是发生,还是偶尔发生?因为真正的随机数(不是
Math.random()生成的那些是真正随机的,但它们应该足以满足大多数目的)会比人们天真地期望“随机”数字更频繁地“聚集在一起”做。但是如果你说这些值总是在一个狭窄的范围内,比如总是 51.xxxx,而不是 0-100 之间的任何地方,那么这看起来确实很奇怪,我无法从给出的代码 sn-p 中解释它. -
随机并不意味着平均分布。真正随机的数据应该有一些点簇靠近在一起,因为每个点都应该有平等的机会被选中。这是每次都在特定范围内发生还是会发生变化?
-
cryptoObj.getRandomValues() 是 Math.random 的替代品,试试这个
-
我明白了。要回答@RobinZigmond,不,他们并不总是在 51 岁左右。只是很多次。但是你们提出了一个很好的观点。我可能只是误解了随机意味着什么
标签: javascript reactjs math