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

在JavaScript若是须要生成一段不一样的随机数,最好的方法,仍是将要产生的随机数的范围放到这一个数组,并打乱这个数组的顺序。javascript

因为JavaScript里面是没有shuffle这个函数的,因此咱们要打乱数组的顺序仍是要本身来。html

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

这种方法最快,也基本就是其余编程语文中的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这个数组打乱。dom

 

这里关键的难点仍是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()乘以一个产生范围来搞出一个随机整数了。code

 

所以,上述的JavaScript生成一段序列不一样的随机数,JavaScript的shuffle函数,随上以下的HTML代码修饰:htm

<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>

运行结果以下:blog

相关文章
相关标签/搜索