zoukankan      html  css  js  c++  java
  • c#DIY随机数类winform 2010

    using System;  
     
    namespace MyRandom  
    {  
        public class Rand  
        {  
            private long seed;  //随机数种子   
     
            //用系统时间作为随机种子   
            public Rand()  
            {  
                string str = DateTime.Now.Day.ToString();  
                str += DateTime.Now.Hour.ToString();  
                str += DateTime.Now.Minute.ToString();  
                str += DateTime.Now.Second.ToString();  
                str += DateTime.Now.Millisecond.ToString();  
                this.seed = long.Parse(str);  
            }  
            //用户自定义随机种子   
            public Rand(long Value)  
            {  
                this.seed = Value;  
            }  
     
            //产生非负伪随机数   
            public long Next()  
            {  
                long l = this.seed;  
                l = l * l;  
                string strTime = l.ToString();  
                int w = strTime.Length / 3;  
                string str = "";  
                for (int i = w; i < strTime.Length - w; i++)  
                    str += strTime[i];  
                l = long.Parse(str);  
                return l;  
            }  
            //产生上限为Value的伪随机数   
            public long Next(long Value)  
            {  
                if (Value < 0)  
                    return -1;  
                long l = this.seed;  
                l = l * l;  
                string strTime = l.ToString();  
                int w = strTime.Length / 3;  
                string str = "";  
                for (int i = w; i < strTime.Length - w; i++)  
                    str += strTime[i];  
                l = long.Parse(str);  
                return l % Value;  
            }  
            //产生下限为minValue上限为maxValue的伪随机数   
            public long Next(long minValue, long maxValue)  
            {  
                if (minValue < 0 || maxValue < 0 || minValue > maxValue)  
                    return -1;  
                long l = this.seed;  
                l = l * l;  
                string strTime = l.ToString();  
                int w = strTime.Length / 3;  
                string str = "";  
                for (int i = w; i < strTime.Length - w; i++)  
                    str += strTime[i];  
                l = long.Parse(str);  
                return l % (maxValue - minValue) + minValue;  
            }  
            //伪随机数填充指定的比特数组   
            public void NextBytes(byte[] buffer)  
            {  
                long Value = 0;  
                Value = this.Next() % 255;  
                for (int i = 0; i < buffer.Length; i++)  
                {  
                    Value = Value * Value;  
                    string strTime = Value.ToString();  
                    int w = strTime.Length / 3;  
                    string str = "";  
                    for (int j = w; j < strTime.Length - w; j++)  
                        str += strTime[j];  
                    Value = long.Parse(str);  
                    Value = Value % 255;  
                    buffer[i] = (byte)Value;  
                }  
            }  
            //产生0.0到1.0的伪随机数   
            public double NextDouble()  
            {  
                long l = this.Next(0, 100000);  
                if (l == 100000)  
                    return 1.0;  
                l = l * l;  
                string strTime = l.ToString();  
                int w = strTime.Length / 3;  
                string str = "0.";  
                for (int i = w; i < strTime.Length - w; i++)  
                    str += strTime[i];  
                double d = double.Parse(str);  
                return d;  
            }  
        }  

  • 相关阅读:
    C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)
    实现动态的XML文件读写操作(依然带干货)
    多线程下访问控件的方式(您一定会用到,附源码啦!)
    Microsoft.VisualBasic.dll的妙用(开发中肯定会用到哦)
    vue使用element-ui的el-input监听不了键盘事件解决
    vue强制刷新组件
    asp.net微信公众平台本地调试设置
    武大女硕士面试被拒,改简历冒充本科生找工作的感想(原创)
    完整的站内搜索Demo(Lucene.Net+盘古分词)
    ASP.NET多线程下使用HttpContext.Current为null解决方案
  • 原文地址:https://www.cnblogs.com/hfzsjz/p/1650859.html
Copyright © 2011-2022 走看看