如何存储随机数结果?多骰子滚轮数组结果重复问题
问题原因与解决方法
你遇到的问题核心是d4只被计算了一次:
- 你在循环外定义了
const d4 = Math.floor((Math.random() * 4) + 1),这行代码只会在程序启动时执行一次,生成一个固定的随机数,之后d4的值就不再变化。 - 循环里的
arrayOfResults.push(d4)只是把这个固定值重复添加10次,所以数组里所有元素都完全相同。
修正方案
把骰子的随机计算逻辑放到循环内部,让每次循环都重新生成新的随机数:
let dieAmount = 10 let arrayOfResults = [] for (let i = 1; i <= dieAmount; i++) { // 每次循环都重新计算d4的结果 const d4 = Math.floor((Math.random() * 4) + 1) arrayOfResults.push(d4) } console.log(arrayOfResults)
如果需要复用掷骰子的逻辑,也可以封装成函数,代码结构更清晰:
function rollD4() { return Math.floor((Math.random() * 4) + 1) } let dieAmount = 10 let arrayOfResults = [] for (let i = 1; i <= dieAmount; i++) { arrayOfResults.push(rollD4()) } console.log(arrayOfResults)
这样每次循环都会生成新的随机数,数组里的元素就会是不同的骰子结果了。
内容的提问来源于stack exchange,提问作者ProbablyGametes
相关产品推荐
相关产品推荐

