【问题标题】:hello, I would like to have a different random number, but I always get the same, an idea?你好,我想要一个不同的随机数,但我总是得到相同的,一个想法?
【发布时间】:2021-01-15 15:46:45
【问题描述】:

当我“单击”我的按钮#roll 时,我希望有一个不同的随机数,但我总是得到相同的数字。有人可以帮帮我吗?

这是我的代码:

//création nombre aléatoire
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max, min + 1)+ min);
}
numberRandom = getRandomInt(1, 7)

//création du lancé de dé
const roll = document.getElementById("roll")
roll.addEventListener('click',()=>{
  alert(numberRandom)
})
          <button class="favorite styled" type="button" id="roll">
          Lancer le dé
          </button>

【问题讨论】:

  • 这看起来像是 this 的副本。它没有解释为什么你的代码坏了,但我猜你宁愿拥有正确的代码而不是解释。
  • Math.floor(Math.random() * (max, min + 1)+ min); 没有意义。你的意思是Math.floor(Math.random() * (max - min + 1)+ min);

标签: javascript random


【解决方案1】:

如果您想在点击时生成一个随机数,那么您需要将生成随机数的代码放在点击时调用的函数中。

将它直接放在脚本的顶层意味着您在页面加载时生成一个随机数一次

每次调用函数时,您都会从roll 变量中读取相同的数字。

【讨论】:

    【解决方案2】:

    您的问题是 numberRandom = getRandomInt(1, 7) 在页面加载时运行一次。如果您希望每个按钮单击不同的数字,只需将其移动到事件侦听器中即可

    const roll = document.getElementById("roll")
    roll.addEventListener('click',()=> {
      numberRandom = getRandomInt(1, 7)  // <=== move it here
      alert(numberRandom)
    })
    

    另外,计算似乎不正确,我认为应该更接近

    Math.floor(Math.random() * (max - min + 1)) + min
    

    【讨论】:

      【解决方案3】:

      function getRandomInt(min, max) {
        return Math.floor(Math.random() * (max - min+1) ) + min;
      }
      
      const roll = document.getElementById("roll")
      roll.addEventListener('click',()=>{
        var numberRandom = getRandomInt(1, 6)
        console.log('Dice rolled ,you got ',numberRandom);
      })
      <button class="favorite styled" type="button" id="roll">
         Role dice
      </button>

      【讨论】:

      • 谢谢大家的回答??
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 2018-09-10
      相关资源
      最近更新 更多