原生JS自己构建一个0-1之间的随机小数
来源:互联网 发布:数控车床编程论文 编辑:程序博客网 时间:2024/05/17 22:35
原生JS自己构建一个0-1之间的随机小数
前言
我们都知道使用Math.random()
来得到一个随机数。但是很多人都没有深入的思考过,如何这个随机数是怎么来的。
我也不知道是怎么来的,只知道这是一个比较复杂的随机算法。那么我们有没有可能通过自己的代码来实现一个类似随机数呢?我实践了一下,是可以的。不过我的算法比较简单,所得的随机数不是那么随机。
目标,构建一个0-1
之间随机小数
开干
我首先想到的是时间戳。所以,我在chrome控制台输入了
new Date()// returnThu May 04 2017 10:50:04 GMT+0800 (CST)// 不是我想要的,我想要的是时间戳,所以,这样+new Date()// return1493866864704// 这个数字是会变化的,多执行几次+new Date()1493866908283+new Date()1493866908885+new Date()1493866909428+new Date()1493866909959+new Date()1493866910520+new Date()1493866911278
如上,多次执行之后,发现,前面基本不变,但是最后几位变化挺大的。原理很简单,后面是毫秒,当然变化快了。
如果倒过来,就应该差不多了,开干
// 先把数字变成字符串+new Date()+''// return"1493867038901"// 再把字符串变成数组(+new Date()+'').split('')// return["1", "4", "9", "3", "8", "6", "7", "1", "2", "4", "7", "8", "2"]// 再把数组倒排(+new Date()+'').split('').reverse()// return["0", "0", "2", "2", "8", "1", "7", "6", "8", "3", "9", "4", "1"]// 再把数组变成字符串(+new Date()+'').split('').reverse().join('')// return"3274527683941"
果然倒过了。
我们需要的是0到1之间的小数,最简单的方法是,在最前面加上'0.'
,所以,代码是:
'0.'+(+new Date()+'').split('').reverse().join('')// return"0.9282437683941"
最后,我们得到的是一个字符串,而我们想要的是一个数字,所以:
+('0.'+(+new Date()+'').split('').reverse().join(''))// return0.5832047683941
好了,我们得到了一个获取随机数的方法了!
不过没什么卵用~,算是练了下脑子吧!
2 0
- 原生JS自己构建一个0-1之间的随机小数
- C++生成-1到1之间的随机小数
- sql如何获取一个0-15之间的随机数(不包括0,15),而且必须带两位随机的小数
- 0-1随机小数
- 如何用原生js封装一个属于自己的插件
- 自己构建一个domReady.js
- js正则验证0~1之间数字的方法。可以为小数,0和1
- 构建自己的JS库
- 自己写的原生js轮播图插件
- js生成1-10之间的随机整数
- php生成0~1随机小数方法
- php生成0~1随机小数方法
- 自己做工具--用原生js封装一个AJAX插件
- js-构建自己的js库
- javascript学习1——构建自己的JS库
- 使用原生的函数构建一个简单的网络请求
- 用原生JS产生随机长度和随机值的数组
- 自定义的随机小数写法
- 谈谈数据库连接池的原理
- DIV+CSS规范命名大全集合
- 秒杀系统架构分析与实战 for java
- No result defined for action
- Android 解决输入法键盘遮盖布局问题,程序员不得不用的方案,快捷!
- 原生JS自己构建一个0-1之间的随机小数
- 手机零件采购
- android输入框在软键盘的上面
- Java线程池
- @RequestMapping详解
- 超详细React Native实现微信好友/朋友圈分享功能-Android/iOS双平台通用
- C#MD5加密算法的实例
- Typora使用手册和Markdown区别
- 实例分析 JavaScript 作用域