实现随机数是各种编程语言都很常见的一个编程任务,下面介绍一下在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());

JavaScript随机数生成方法的更多相关文章

  1. JavaScript - reduce方法,reduceRight方法 (Array)

    JavaScript - reduce方法 (Array) 解释:reduce() 方法接收一个函数作为累加器(accumulator),数组 中的每个值(从左到右)开始合并,最终为一个值. 语法:a ...

  2. JavaScript slice() 方法

    JavaScript slice() 方法  JavaScript Array 对象 实例 在数组中读取元素: var fruits = ["Banana", "Oran ...

  3. JavaScript toLocaleString() 方法

    JavaScript toLocaleString() 方法 JavaScript Array 对象 定义和用法 把数组转换为本地字符串. 语法 arrayObject.toLocaleString( ...

  4. 关于JavaScript lastIndexOf() 方法 w3school.com.cn写的不一定全对

    关于JavaScript lastIndexOf() 方法 w3school.com.cn的表述是 定义和用法 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的 ...

  5. javascript一些方法兼容

    javascript一些方法兼容 标签(空格分隔): javascript 方法收集 [TOC] Object.keys 参考地址 if (!Object.keys) Object.keys = fu ...

  6. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  7. 把C编译成javascript的方法

    把C编译成javascript的方法,便于嵌入到HTML5中 https://github.com/kripken/emscripten

  8. javascript 字符串方法传参

    javascript 字符串方法传参由于嵌套的单引号,双引号过多.有点混乱.. 正确方法如下: '   <td align="left"><input type= ...

  9. 各种浏览器开启JavaScript脚本方法

    各种浏览器开启JavaScript脚本方法 随着网站设计技术的发展,为了用户友好体验,大部分网站使用了JavaScript脚本设计,如果您的浏览器禁用或关闭的JavaScript支持,那么可能造成网站 ...

随机推荐

  1. 接口测试工具postman(五)批量执行测试用例

    1.准备好测试用例及相关数据 2.点击Run按钮 3.选择运行collection或者folder 4.运行完成

  2. 【WXS数据类型】Date

    生成 date 对象需要使用 getDate函数, 返回一个当前时间的对象. var date = getDate(); //返回当前时间对象 属性: 名称 值类型 说明 [Date].constru ...

  3. spring boot 报错 Error creating bean with name

    Application 启动类 要和父目录平级

  4. 【转】: 探索Lua5.2内部实现:虚拟机指令(2) MOVE & LOAD

    name args desc OP_MOVE A B R(A) := R(B) OP_MOVE用来将寄存器B中的值拷贝到寄存器A中.由于Lua是register based vm,大部分的指令都是直接 ...

  5. [Clr via C#读书笔记]Cp14字符字符串和文本处理

    Cp14字符字符串和文本处理 字符 System.Char结构,2个字节的Unicode,提供了大量的静态方法:可以直接强制转换成数值: 字符串 使用最频繁的类型:不可变:引用类型,在堆上分配,但是使 ...

  6. 【shell 练习3】用户管理脚本(一)

    一.创建十个用户,密码为八位 [root@localhost ~]# cat UserManger02.sh #!/bin/bash . /etc/init.d/functions [ $UID -n ...

  7. 使用eclipse创建maven项目出现的一个问题

    错误信息 This error occurs when you employ a plugin that Maven could not download. Possible causes for t ...

  8. ServiceStack.Ormlit 使用Insert的时候自增列不会被赋值

    Insert签名是这样的,将第2个参数设置为true就会返回刚插入的自增列ID了,然后可以手工赋值到对象上面去 public static long Insert<T>(this IDbC ...

  9. POJ 3384 Feng Shui(计算几何の半平面交+最远点对)

    Description Feng shui is the ancient Chinese practice of placement and arrangement of space to achie ...

  10. canvas学习(一):线条,图像变换和状态保存

    canvas学习(一):线条,图像变换和状态保存 一:绘制一条线段: var canvas = document.getElementById('canvas') var ctx = canvas.g ...