专栏首页地方网络工作室的专栏原生JS自己构建一个0-1之间的随机小数

原生JS自己构建一个0-1之间的随机小数

原生JS自己构建一个0-1之间的随机小数

前言

我们都知道使用Math.random()来得到一个随机数。但是很多人都没有深入的思考过,如何这个随机数是怎么来的。

我也不知道是怎么来的,只知道这是一个比较复杂的随机算法。那么我们有没有可能通过自己的代码来实现一个类似随机数呢?我实践了一下,是可以的。不过我的算法比较简单,所得的随机数不是那么随机。

目标,构建一个0-1之间随机小数

开干

我首先想到的是时间戳。所以,我在chrome控制台输入了

new Date()
// return
Thu May 04 2017 10:50:04 GMT+0800 (CST)
// 不是我想要的,我想要的是时间戳,所以,这样
+new Date()
// return
1493866864704
// 这个数字是会变化的,多执行几次
+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(''))
// return
0.5832047683941

好了,我们得到了一个获取随机数的方法了!

不过没什么卵用~,算是练了下脑子吧!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • javascript 商城结算页面选择今日或明日送货时间数组的实现

    今日在开发一个生鲜商城的项目,其中结算页面有一个需求。大概意思如下,后端会返回该店铺每日的营业时间,格式是 { startTime: '09.00', endT...

    FungLeo
  • Python 打造基于百度翻译的命令行翻译工具

    版权声明:本文为 FengCms FungLeo 原创文章,允许转载,但转载必须注明出处并附带首发链接 ...

    FungLeo
  • Python3 初学实践案例(3)argparse 命令行参数库的使用

    Python3 初学实践案例(3)argparse 命令行参数库的使用 在前面一篇博文中 http://blog.csdn.net/fungleo/articl...

    FungLeo
  • ONOS集群选举分析

    首先简单介绍下自己,之前是做 floodlight 控制器开发的,鉴于 ODL 和 onos 的如火如荼的发展,如果不对了解点就感觉自己 OUT 了,因此忙里偷...

    SDNLAB
  • FPGA信号截位策略

    在FPGA中,随着信号处理的层次加深,对信号进行乘、累加、滤波等运算后,可能输入时仅为8位位宽的信号会扩展成几十位位宽,位宽越宽,占用的硬件资源就越多,但位宽超...

    数字芯片社区
  • Android 高仿微信发朋友圈浏览图片效果

    版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/50...

    Hankkin
  • Python如何爬取b站热门视频并导入Excel

    这篇文章主要介绍了Python如何爬取b站热门视频并导入Excel,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    python学习教程
  • java基础io流——字符流的变革(深入浅出)

    在io流里,先诞生了字节流,但是字节流读取数据会有乱码的问题(读中文会乱码)。比如:

    100000860378
  • 零基础自学C语言有什么推荐的书?

    零基础自学C语言,还是简单点的适合,用书本学习编程笔者给出以下几点建议,首先选择一本书就够了,不要一口气买一堆,这本还没研究完又切换到别的书本上去了。 现在推荐...

    程序员互动联盟
  • leetcode 37. Sudoku Solver 36. Valid Sudoku 数独问题

    三星机试也考了类似的题目,只不过是要针对给出的数独修改其中三个错误数字,总过10个测试用例只过了3个与世界500强无缘了

    流川疯

扫码关注云+社区

领取腾讯云代金券