NextDouble实现的随机数

 NextDouble实现的随机数,实现如下:

//发现我NextDouble的实现很无赖 using System; namespace rendom { 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; } } class AppMain { static int Main() { Rand rand = new Rand(); //产生伪随机数 long n = rand.Next(); Console.WriteLine(n.ToString()); //产生100内的伪随机数 n = rand.Next(100); Console.WriteLine(n.ToString()); //产生20到30之间的伪随机数 n = rand.Next(20, 30); Console.WriteLine(n.ToString()); //产生0.0到1.0之间的伪随机数 b = rand.NextDouble(); Console.WriteLine(b.ToString()); Console.ReadLine(); } } }

你可能感兴趣的:(String,Class,buffer,byte)