文档章节

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

yongh701
 yongh701
发布于 2018/09/01 10:05
字数 683
阅读 25
收藏 0

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

运行结果如下:

© 著作权归作者所有

yongh701
粉丝 28
博文 17
码字总数 10682
作品 0
佛山
私信 提问
好程序员web前端教程分享JavaScript Math(算数)对象

  好程序员web前端教程分享JavaScript Math(算数)对象,这里小编每天也会分享一下干货给大家。那么今天说道的就是好程序员web前端培训课程中的章节。 JavaScript Math(算数) 对象 Math(算数...

好程序员IT
06/19
7
0
以变制变——前端动态化代码保护方案探索

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文分享了腾讯防水墙团队关于机器对抗的动态化思路,希望能抛砖引玉,给现在正在做人机对抗的团队一些启发,帮助更多中小型公司...

腾讯云加社区
2018/06/07
0
0
Javascript生成随机数

Javascript生成随机数 1.内置随机数生成器 Math.random(); //该方法产生一个0到1之间的浮点数。Math.floor(Math.random()10+1); //1-10Math.floor(Math.random()24);//0-23 2.基于时间的随机...

jieqiuming
2014/04/17
171
0
js修改img的src属性刷新图片时的图片缓存问题

问题:上传一张图片,通过js更新src属性刷新图片使其即时显示时, 当img的src当前的url与上次地址无变化时(只更改图片,名称不变,不同图片名称相同)图片不变化(仍显示原来的图片) 但通过...

HaierBrother
2018/06/22
415
0
WebAssembly Demo之Canvas中随机运动圆球

作者:云荒杯倾 1、Demo功能介绍 实现了一个圆球在800px * 600px画布内随机运动,固定时间间隔随机运动一次,运动方向由x和y轴组成的向量决定,这个向量是随机值(后面会称它为随机向量),从...

云荒杯倾
2017/09/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java Web 中对 ServletRequest 的一些非常规操作解决方案

1. 前言 ServletRequest 是我们搞 Java Web 经常接触的 Servlet Api 。有些时候我们要经常对其进行一些操作。这里列举一些经常的难点操作。 2. 提取 body 中的数据 前后端交互我们会在 body...

码农小胖哥
34分钟前
2
0
《Dual Encoding U-Net for Retinal Vessel Segmentation》阅读笔记-MICCAI2019

作者:Bo Wang1,2, Shuang Qiu2, and Huiguang He1,2,3 目的:Retinal Vessel Segmentation is an essential step for the early diagnosis of eye-related diseases, such as diabetes and ......

JungleKing
36分钟前
2
0
一次看懂 Https 证书认证

TLS > 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图,TLS...

极客收藏夹
50分钟前
5
0
https证书买哪家好?有哪些供应商

在选购https证书前除了要了解类型外,还需要了解https证书供应商,毕竟不同的供应商,提供的产品质量与服务也是有差异的。今天小编就为大家讲讲https证书供应商方面的内容,希望各位会喜欢。...

安信证书
52分钟前
6
0
Zuul 配置

概述:zuul底层是基于servlet,是由一系列的filter链构成。 1、路由配置 a、单例serverId映射 zuul: routes: client-a: path: /client/** serviceId: client-a 意思是...

java框架开发者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部