在限制区域内随机取点,求比较高效的算法

是这样,算法要求,每秒生成一个随机数,这个随机数必须是符合一定要求的。有什么比较高效的算法。
譬如
[0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0]
20个数组元素,采用 Math.floor(20*Math.random()),生成随机数后,需要验证,如果对应的数组元素为1,则重新生成。
一般来说,有两种算法,第一种就像我上面说的,每次生成后去验证,对应元素是否为1,这样做的弊端就是当整个数组大部分都是1的时候,生成随机数的效率很低。
还有一种算法,就是在生成之前,统计数组中数组元素不是1的个数(此处是17),然后在这17个元素里面生成一个随机数,这样的弊端就是每次生成之前都要消耗大量资源。
除了以上两种算法,还有没有更好一点的算法,能高效的生成符合要求的随机数?

牧羊人nacy
浏览 570回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript