【JavaScript】生成一段序列不同的随机数

在JavaScript如果需要生成一段不同的随机数,最好的方法,还是将要产生的随机数的范围放到这一个数组,并打乱这个数组的顺序。

由于JavaScript里面是没有shuffle这个函数的,所以我们要打乱数组的顺序还是要自己来。

最好的方法还是遍历这个数组,对每一个元素都和一个随机位置的元素交换位置。

这种方法最快,也基本就是其他编程语文中的shuffle思想。

具体如下:

var array=[1,2,3,4,5,6,7,8,9];
for(var i=0;i<array.length;i++){
	var random_index=Math.floor(Math.random()*array.length);//产生一个在0到数组长度之间的随机数
	//经典的临时变量交换
	var t=array[i];
	array[i]=array[random_index];
	array[random_index]=t;
}

上述代码将产生1-9之间,9个不同都的随机数,也就是将这1-9这个数组打乱。

 

这里关键的难点还是Javascript的随机数的取法。JavaScript自带的随机数函数,也就是Math.random()。Math.random()只能在0.0~1.0之间的产生一个伪随机数,同时包含0不包含1,比如0.8647578968666494。因此我们需要对其加工。

Math.ceil(Math.random()*10);//获取从1到10的随机整数 ,取0的概率极小。
Math.round(Math.random());//可均衡获取0到1的随机整数。
Math.floor(Math.random()*10);//可均衡获取0到9的随机整数。
Math.round(Math.random()*10);//基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。因为结果在0~0.4 为0,0.5到1.4为……8.5到9.4为9,9.5到9.9为10。所以头尾的分布区间只有其他数字的一半。

其中这里:Math.ceil()是向上取整。Math.floor()是向下取整。Math.round()是四舍五入。基本用到Math.floor()配合Math.random()乘以一个产生范围来搞出一个随机整数了。

 

因此,上述的JavaScript生成一段序列不同的随机数,JavaScript的shuffle函数,随上如下的HTML代码修饰:

<html>
	<body>
		<p id="init"></p>
		<p id="result"></p>
	</body>
	<script>
		var array=[1,2,3,4,5,6,7,8,9];
		document.getElementById("init").innerHTML=array;
		for(var i=0;i<array.length;i++){
			var random_index=Math.floor(Math.random()*array.length);//产生一个在0到数组长度之间的随机数
			//经典的临时变量交换
			var t=array[i];
			array[i]=array[random_index];
			array[random_index]=t;
		}
		document.getElementById("result").innerHTML=array;
	</script>
</html>

运行结果如下:

转载于:https://my.oschina.net/u/3776619/blog/1940527

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值