一、常用操作
- NextDouble():返回0-1.0之間的隨機數
- Next():返回非負隨機整數(0-216)
- Next(i):返回一個小於i的非負隨機整數
- Next(i,j):生成i – j 的隨機整數
- NextBytes(byte[]):用隨機整數(0-255)填充指定字節數組的各個元素。
System.Random r = new Random(); s1 = r.NextDouble().ToString();//0.868992506465405 s2 = r.Next().ToString(); //1665548020 s3 = r.Next(10).ToString(); //5 s4 = r.Next(1000, 2000).ToString();//1885
byte[] buffer = new byte[255]; r.NextBytes(buffer); s5 = buffer[254].ToString(); ;//207
二、種子操作
1、不指定隨機種子,則默認有系統時鍾生成種子。
時間間隔如果太短,創建的多個不同的Ramdom對象將具有相同的默認種子值,因而會產生幾組相同的隨機數。
System.Random r1 = new Random(); System.Random r2 = new Random(); Console.WriteLine(r1.Next().ToString());// 615672499 Console.WriteLine(r2.Next().ToString());// 615672499
使用單個Random對象生成所有隨機數可避免此問題。
System.Random r = new Random(); Console.WriteLine(r.Next().ToString());// 1933637733 Console.WriteLine(r.Next().ToString());// 1799552041
2、種子值相同時,其隨機序列也相同。
System.Random r1 = new Random(1); System.Random r2 = new Random(1); System.Random r3 = new Random(2); byte[] buffer1 = new byte[2]; byte[] buffer2 = new byte[2]; byte[] buffer3 = new byte[2]; r1.NextBytes(buffer1); r2.NextBytes(buffer2); r3.NextBytes(buffer3); s1 = String.Join(",", buffer1);// 70,208 s2 = String.Join(",", buffer2);// 70,208 s3 = String.Join(",", buffer3);// 113,147