zoukankan      html  css  js  c++  java
  • 关于随机数

    随机数在现代社会应用不可谓少,我们可以在每天用到的手机验证码,网上博彩,网上斗地主等等 中看到随机数的影子

    7月27日晚9点,学习之余在如鹏网杨中科视频中便看到关于随机数的解释http://www.rupeng.com/Courses/Index/13

    下面是自己定义的线性求同法求随机数

       public class MyRandom
        {
            private int seed;
            public MyRandom(int seed)
            {
                this.seed = seed;
            }
            public int Next()
            {
                int n = (seed*29  + 37) % 1000;
                this.seed = n;
                return n;
            }
        }
    线性同余法

    因为是线性,这种方法输入相同种子每次输出都是一样的结果

    所以我们要给他加入一个可变参数来控制这个随机数

    在客户端加入系统启动后经过时间的毫秒数  int tc = Environment.TickCount;

     int tc = Environment.TickCount;
                Console.WriteLine("tickCount=" + tc);
                //MyRandom mR = new MyRandom(5);
                MyRandom mR = new MyRandom(tc);
                for (int i = 0; i < 100; i++)
                {
    
                    Console.WriteLine(mR.Next());
                }
                Console.ReadKey();
    View Code

    这种就好了很多,c#内部Random方法也是用的这种方法,

    但是现在的网站大多都支持多用户并发操作。

    所以,相同时间多个用户操作时会获得相同随机数,这就增加了网站的不稳定性

    这时我们需要考虑用多个值来约束这个随机数,c#给出的解决方案是

    byte[] randomBytes = new byte[3];
                RNGCryptoServiceProvider r =
                new RNGCryptoServiceProvider();
                for (int i = 0; i < 100; i++)
                {
                    r.GetBytes(randomBytes);
                    int rngNum = BitConverter.ToInt16(randomBytes, 0);
                    Console.WriteLine(rngNum);
                }
                Console.ReadLine();
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    VS2017 + EF + MySQL 环境配置
    Ajax请求参数到一个URL包含下划线或者v(_、v)
  • 原文地址:https://www.cnblogs.com/codeface/p/5712756.html
Copyright © 2011-2022 走看看