zoukankan      html  css  js  c++  java
  • JavaScript随机数生成方法

    实现随机数是各种编程语言都很常见的一个编程任务,下面介绍一下在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());
  • 相关阅读:
    PAT (Advanced Level) Practice 1071 Speech Patterns (25分)
    PAT (Advanced Level) Practice 1070 Mooncake (25分)
    PAT (Advanced Level) Practice 1069 The Black Hole of Numbers (20分)
    PAT (Advanced Level) Practice 1074 Reversing Linked List (25分)
    PAT (Advanced Level) Practice 1073 Scientific Notation (20分)
    第一次冲刺个人总结01
    构建之法阅读笔记01
    人月神话阅读笔记01
    四则运算2
    学习进度条(软件工程概论1-8周)
  • 原文地址:https://www.cnblogs.com/xiaoyang002/p/4101565.html
Copyright © 2011-2022 走看看