参考:https://www.runoob.com/w3cnote/js-random.html

随机生成某个字段内的数值

  1. ceil(x) 对数进行上舍入,即向上取整。
  2. floor(x) x 进行下舍入,即向下取整。
  3. round(x) 四舍五入。
  4. random() 返回 0 ~ 1 之间的随机数,包含 0 不包含 1
  5. Math.ceil(Math.random()*10); // 获取从 1 到 10 的随机整数,取 0 的概率极小。
  6. Math.round(Math.random()); // 可均衡获取 0 到 1 的随机整数。
  7. Math.floor(Math.random()*10); // 可均衡获取 0 到 9 的随机整数。
  8. Math.round(Math.random()*10); // 基本均衡获取 0 到 10 的随机整数,其中获取最小值 0 和最大值 10 的几率少一半。

生成 [n,m] 的随机整数

  1. //生成从minNum到maxNum的随机数
  2. function randomNum(minNum,maxNum){
  3. switch(arguments.length){
  4. case 1:
  5. return parseInt(Math.random()*minNum+1,10);
  6. break;
  7. case 2:
  8. return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10);
  9. break;
  10. default:
  11. return 0;
  12. break;
  13. }
  14. }

生成 [1,max] 的随机数

  1. // max - 期望的最大值
  2. parseInt(Math.random()*max,10)+1;
  3. Math.floor(Math.random()*max)+1;
  4. Math.ceil(Math.random()*max);

生成 [0,max] 到任意数的随机数

  1. // max - 期望的最大值
  2. parseInt(Math.random()*(max+1),10);
  3. Math.floor(Math.random()*(max+1));

生成 [min,max] 的随机数

  1. // max - 期望的最大值
  2. // min - 期望的最小值
  3. parseInt(Math.random()*(max-min+1)+min,10);
  4. Math.floor(Math.random()*(max-min+1)+min);

随机生成某个字段内的数值并且限制某几个数值的和为固定数值

  1. addList中是保存前几条数据的情况
  2. /*
  3. 需要保证每个小时增加1250,每两分钟增加一次(还要求每次增加不超过100)
  4. 如果使用随机数的情况,前29条数据是增加100以内的数字,则第30条增加的数据会很大,可能会超过100,可以使用下面的方式:将1个小时的数据和再次切割,变成10分钟的数据之和,即保证10分钟内增加208,每2分钟增加一次.则即使碰到最坏的情况,最后一个增加的值也就是128
  5. */
  6. this.timer = setInterval(() => {
  7. // 随机数取[20+0, 20+40]
  8. let otherValue = 20 + Math.floor(Math.random()*(40+1));
  9. if(this.addList.length === 4) {
  10. const reduce = this.addList.reduce((all, cu) => all + cu)
  11. otherValue = ((208 - reduce) > 0 ? (208 - reduce) : 0);
  12. if(otherValue > 100) {
  13. otherValue = 100
  14. }
  15. this.addList = []
  16. console.log(otherValue)
  17. }else {
  18. console.log(this.addList.length, otherValue)
  19. this.addList.push(otherValue)
  20. }
  21. }, 1 * 1000 * 2)