JavaScript中如何从两个已定义数组变量里随机选中其中一个
实现方法
你已经定义好的两个数组:
var array = [{"number": 1}, {"number": 2}] var array1 = [{"number": 2}, {"number": 3}]
要实现两个数组等概率(各50%概率)随机选中一个,直接利用JS原生Math.random()的均匀分布特性实现即可,该方法返回[0, 1)区间的均匀分布随机数,以0.5为分界判断就能保证两个数组选中概率完全一致。
最简写法
// 直接返回选中的数组 const selectedArr = Math.random() < 0.5 ? array : array1
扩展性更好的写法
如果后续需要扩展成从N个数组里等概率选一个,推荐用索引匹配的写法,逻辑更清晰:
// 把待选数组放到统一集合里 const candidateArrays = [array, array1] // 生成0到数组长度-1的随机整数,概率完全均等 const randomIndex = Math.floor(Math.random() * candidateArrays.length) // 取出对应数组 const selectedArr = candidateArrays[randomIndex]
注意:不要用
Math.round(Math.random())做判断,虽然理论上区间长度一致,但受浮点数精度影响会存在极其微小的概率偏差,用Math.floor取整是业界通用的稳妥方案。
内容的提问来源于stack exchange,提问作者KennethAndmr1.4.19.8.3
相关产品推荐
相关产品推荐

