生成指定范围随机数

生成指定范围内的随机数是一个常用的操作

  • 首先弄明白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的部分下取整来解决

猜你喜欢

转载自www.cnblogs.com/wangbanshan/p/11432815.html