javascript随机取数问题

在js随机中,想要实现每隔5秒取一组5个数的数组,且第二次出现的值不能在第一次出现,第三次出现的值不能在第二次出现,以此类推,求助大家!!!!!
累似:
第一次出现:[1,3,6,9,11],(每组数据不能有重复的)
第二次出现:[2,5,7,8,10],(第二次不能与第一次有相同的)
第三次出现:[1,4,9,12,6],(第三次不能与第二次有相同的,与第一次可以有重复的)
...

阅读 2k
1 个回答

生成随机数,判断是否在前一次的数组中出现,如果不是就push到新数组里。

const generatorRandomArray = (function() {
  //用于保存前一次计算得到的数组
  let savedArray = []; 
  //生成随机数的函数
  function generatorRandom(n) {
    return Math.ceil(Math.random() * n);
  }
  return function(n) {
    let newArray = [];
    for (let i = 0; i < 5; i++) {
      var num;
      while (true) {
        num = generatorRandom(n);
        //判断随机数是否在前一次数组中出现
        if (!savedArray.includes(num) && !newArray.includes(num)) {
          break;
        }
      }
      newArray.push(num);
    }
    savedArray = [...newArray];
    return newArray;
  };
})();

函数接受一个参数表示随机数的边界,比如generatorRandomArray(300)表示生成的随机数在1~300

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题