zoukankan      html  css  js  c++  java
  • JavaScript实战:产生n个不重复随机数

    实战:

    (1)案例描述

    用JavaScript产生n个[min,max]区间内的不重复随机数。

    (2)实现思路

    1.运用Math对象的random()方法生成一个[min,max]区间内的随机数;

    2.生成n个[min,max]区间内的不重复随机数,生成第i个[min,max]区间的随机数时,与之前i-1个数比较,如有重复,令i=i-1;重复生成第n个随机数。确保每次生成的随机数都不重复。

    代码如下:

    <html>
        <head>
        <title>产生n个不同随机数</title>
        </head>
        <body>
        <script>
        //函数1 求指定范围内的一个随机数
            function selectFrom(min,max)
            {
                var sum = max-min+1;
                return Math.floor(Math.random()*sum+min);
                }
            //函数2 求指定范围内n个不重复的随机数
            function myNum(n,min,max)
            {
                var a = [];
                for(i=0;i<n;i++)
                {
                    a[i]=selectFrom(min,max);
                    for(z=0;z<i;z++)
                    {
                        if(a[i]==a[z])
                        {
                            i--;
                            break;
                        }
                    }
                    
                }
                return a;
            }
            var result = myNum(10,1,10);
            console.log(result.toString());
        </script>
        </body>
    </html>

    我们先申明一个selectFrom函数,求他指定范围内的随机数,然后,再声明一个函数,因为selectFrom函数只能声明一个随机数,我们要想声明n个随机数,就要加个for循环,因为我们要生成n个数,每生成一个数就要和前面生成的数做比较,如果后面这个数和前面生成的一样,那么这个数就要重新生成,避免重复。那如何把这个值和前面的值进行比较呢,那么前面的数就要存储下来,把他输出到控制台是没法存储下来的,所以我们这里就要声明数组,然后把他放到for循环里面,由于我们还要把当前数组生成的值与数组以前的0到 i -1的这个范围的值进行比较,所以这里还要加一个for循环,把他和前面的进行比较,如果相等,就 i - -,然后用break跳出当前循环,再进行 i ++,重新执行一次。这样我们把得到的数组返回,把他变成字符串打印出来,运行结果如下,就没有重复的了:

  • 相关阅读:
    CppUnit使用指南
    详细分析内存泄露检测
    设计模式之我的理解创建型模式:工厂方法
    MSXML2使用笔记
    【C++】函数指针
    设计模式之我的理解桥模式
    python 使用pyinstaller,pywin32打包.py成.exe应用程序
    python 获取当前时间的用法
    python 使用urllib.urlopen超时问题的解决方法
    python pip的安装流程,以及使用pip更新,卸载第三方模块
  • 原文地址:https://www.cnblogs.com/daitu/p/12681679.html
Copyright © 2011-2022 走看看