c#DIY随机数类

在类库横行的今天,请支持DIY ,直接看代码(有注释)  

view plaincopy to clipboardprint?
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;   
        }   
    }   
} 



 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值