实现随机数是各种编程语言都很常见的一个编程任务,下面介绍一下在JavaScript如何实现随机数。第一中方法通过重写Math.random方法实现,第二种方法改自一个C实现,都可以实现编程目的。

直接上代码:

01 <script language="javascript">   
02 var native_random = Math.random;
03 Math.random = function(min, max, exact) {
04     if (arguments.length === 0)
05     {
06         return native_random();
07     }
08     else if (arguments.length === 1)
09     {
10         max = min;
11         min = 0;
12     }
13     var range = min + (native_random()*(max - min));
14     return exact === void(0) ? Math.round(range) : range.toFixed(exact);
15 };
16 document.write(Math.random());
17 document.write('<br />');
18 document.write(Math.random(10));
19 document.write('<br />');
20 document.write(Math.random(3,10));
21 document.write('<br />');
22 document.write(Math.random(2,10,4));
23 </script>

程序运行结果如下:

1 0.2989420900121331
2 7
3 9
4 2.2469

如何不使用Math.random实现随机数呢?下面的函数改自一个C实现:

01 var random = (function(){
02     var high = 1, low = 1 ^ 0x49616E42;
03     var shuffle = function(seed){
04         high = seed;
05         low = seed ^ 0x49616E42;
06     }
07      
08     return function(){
09         var a = new Date()-0
10         shuffle(a);
11         high = (high << 16) + (high >> 16);
12         high += low;
13         low += high;
14         return high;
15     }
16 })();
17   
18 p(random());

最新文章

  1. SharePoint 2013 沙盒解决方案不能激活(激活按钮不可用)
  2. Windows7 64位压缩包安装MySQL5.7.9
  3. SphinxSE 一些SQL查询语句
  4. JS - Constructor还可以这样用
  5. Black Box 分类: POJ 栈和队列 2015-08-05 14:07 2人阅读 评论(0) 收藏
  6. 二十、Android -- SDcard文件读取和保存
  7. 主题:PageRank解释
  8. openssl Mac编译小记
  9. PCB板蛇形走线有什么作用
  10. 如何本地测试例如QQ登录等第三方接口
  11. OpenCV探索之路(十六):图像矫正技术深入探讨
  12. jquery第二篇
  13. node版本升级参考
  14. 吴裕雄 python 机器学习——岭回归
  15. js对象之XMLHttpReques对象学习
  16. 使用update可以防止并发问题(保证数据的准确性),如果使用select会产生并发问题 ; select * from xx for update 给查询开启事务,默认情况下是没有事物的
  17. golang 多个worker正常关闭的示例
  18. Linux基础命令---修改用户密码
  19. Calendar的使用注意
  20. 获取SQL数据库表空间结构

热门文章

  1. leetcode-第k个排列(Java和c++版)
  2. HTML 之 表单
  3. 第一周 Welcome
  4. 感知机(perceptron)
  5. geth账户密码
  6. SpringBoot在IntelliJ IDEA下for MAC 热加载
  7. POJ 3608 Bridge Across Islands(计算几何の旋转卡壳)
  8. Thunder——基于NABCD评价“欢迎来怼”团队作品
  9. 找bug——加分作业
  10. 往Matlab中添加工具包