首页 > 解决方案 > Javascript函数获取从1到100递增顺序的随机数

问题描述

我正在创建虚假统计实时数据,我需要显示网站上可用的用户数量在一场 5 分钟的游戏中,我想生成 1 到 100 范围内的随机数,但按递增顺序。这意味着我得到的每个数字都应该大于前一个。

预期输出:每个函数调用的输出将像 1,5,12,25,...,98,100,仅以随机和增量顺序排列。提前致谢。

我的代码:

randomnumber(fixed,count,range){
  return fixed+count*range;
},
function(){
  var count = 1; 
  this.socketData( ({ data }) => { 
    count++ 
    data.data.totalUsers += this.randomnumber(50,count,Math.abs(Math.floor(Math.random() * (100 - 1) +1)));
}

标签: javascript

解决方案


假设

因此,需要说明一些假设:

  • 没有数字可以重复
  • 数字必须是升序的
  • 数字必须在 1 - 100(含)范围内

这意味着我们可以有 1x 条目,即[100]最多 100 个条目[0,1,2,...98,99,100]

因此,要实施此策略,我们需要:

  • 创建 X 个随机条目(根据需要修改种子 - 100 倍意味着我们允许所有场景,我选择随机化它)
  • 对结果进行排序
  • 删除重复项

TLDR;

下面是实现 - 适用于范围50 - 200

// range inclusive
const minRange = 1
const maxRange = 100
const rangePlusOne = maxRange - minRange + 1

// seed = [1 - 100]
const seedNumberOfEntries = parseInt(Math.random() * rangePlusOne) + 1

// generate, sort, unique
console.log([...new Set(
  new Array(seedNumberOfEntries)
    .fill(0)
    .map(() => parseInt(Math.random() * rangePlusOne) + minRange)
    .sort((a,b) => a-b)
  )]
)


推荐阅读