JS取两个数间的随机数

发布时间 2024-01-03 18:55:36作者: 離人非淺

js获取一个随机整数基本用Math的random方法生成,再去乘一个整数并向下或向上取整。

随机数生成的方式,自己摸索了下。

参考文章

代码

  1. 生成整数范围内的随机数,从0开始不包含这个数我在数组中会用到,[0,x)。
var a=(x)=>{
	return Math.floor(Math.random()*x)
}
  1. 生成整数范围内的随机数,不含0包含这个数,[1,x]。
var b=(x)=>{
	return Math.ceil(Math.random()*x)
}
  1. 若想要b中的包含0,即生成包含两数的随机整数,[x,y]。
var c1=(x,y)=>{
	return Math.floor(Math.random()*(y-x+1)+x)
}
  1. +可以看到c1[x,y]中用到了加一,所以也可以这样写。
var c2=(x,y)=>{
	return Math.ceil(Math.random()*(y-x)+x)
}
  1. 那么要想不包含右侧的数就把c1中的加一去掉,[x,y)。
var d=(x,y)=>{
	return Math.floor(Math.random()*(y-x)+x)
}
  1. 自然而然d的相反随机数取法改成ceil就可以了,(x,y]。
var e1=(x,y)=>{
	return Math.ceil(Math.random()*(y-x)+x)
}
  1. +还有另一种写法,就是用d的方式在最后加一,达到ceil的效果。
var e2=(x,y)=>{
	return Math.floor(Math.random()*(y-x)+x)+1
}
  1. 最后就是不包含两个数的随机整数取法,(x,y)。
var f=(x,y)=>{
	return Math.ceil(Math.random()*(y-x-1)+x)
}
  1. +胡乱摸索的时候还发现,试试把c1的实参赋(y,x)会有奇效?。

OK