生成指定范圍隨機數


生成指定范圍內的隨機數是一個常用的操作

  • 首先弄明白Math.random()函數,這個函數默認會返回一個大於等於0但小於1的值[0,1)
    • 如果想要生成0~X之間的隨機數(不包括X),只需要將Math.random()返回值乘上X,那么范圍就是[0,X)
      • 仔細想想,其實上一步乘的步驟可以看做是放大random函數的值域,因此實際上是乘上(X - 0),也就是上界減下界
    • 在上一步可以知道如果想要獲得一個范圍的隨機數,首先需要放大random函數的值域,如果要獲得[a,b]范圍內的隨機數,需要
      1. 放大值域,Math.random()*(b-a)但是這里出現了一個問題
        • 當a為0時,函數返回[0,b)之間的數,結果中不包括b
        • 當a不為0時,函數返回[0,b-a)之間的數,結果中不包括b,此時需要改為Maht.random()*(b-a)+a ,范圍變為[a,b)
      2. 如果限制加大,僅限整數,可以使用floor函數,已知Math.random()X返回[0,X),那么Math.random()X+1返回[0,x+1),再進行下取整並加上下界Math.floor(Math.random() * (max - min + 1) + min) 就可以獲得[min,max]的整數
      3. 如果不加這個限制,那么目前函數沒有直接的方法,可以通過僅對超過max的部分下取整來解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM