在.net Framework中提供了一个专门用来产生随机数的类System.Random,
所谓的随机数发生器是通过一定的算法对事先选定的随机种子做复杂的运算,
用产生的结果来近似的模拟完全随机数,这种随机数被称作伪随机数,
伪随机数是以相同的概率从一组有限的数字中选取的,所选数字并不具有完全的随机性,
但是从实用的角度而言,其随机程度已足够了,
伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,
随机种子的选择就显得非常重要,如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样,
一般地,我们使用同系统时间有关的参数作为随机种子,这也是.net Framework中的随机数发生器默认采用的方法
第一种方法不指定随机种子,系统自动选取当前时间作为随机种子:
Random rnd = new Random();
第二种方法可以指定一个int型参数作为随机种子:
int iSeed=10;
Random rnd = new Random(10);
long tick = DateTime.Now.Ticks;
Random ran = new Random((int)(tick & 0xffffffffL) | (int) (tick >> 32));
这样可以保证99%不是一样。
________________________________________________________________________________________
以下是昨晚从哥哥那学到的简单的,产生随机数的方法,产生100个8位的随机数,并以txt格式输出。
通过Random rnd = new Random() 和rnd.Next(0, 10) 从0-9中获得随机数
定义一个 str=“0123456789”,以index=rnd.Next(0,10)作为str的索引,获得1位随机数,str[index],
然后for循环,将8次循环所得的结果相加 rndstr=rndstr+str[index]
________________________________________________________________________________________
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random(); // 采用系统时间为随机数种子的方法
string str = "0123456789"; // 表示随机数从0-9中选取
Console.WriteLine("以下为程序产生的100个随机数:");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++) //每次循环产生一个8位的随机数,100次循环产生100个随机数
{
string rndstr = ""; //定义随机数字符串,并初始化为空字符串
for (int j = 0; j < 8; j++)
{
var index = rnd.Next(0, 10); //每次循环随机从0-9中选一个数字,通过8次循环获得8个随机数
rndstr = rndstr + str[index]; //8位的随机数通过将8次循环的结果相加而得
}
sb.AppendFormat("{0}\t{1}\r\n", i, rndstr); //采用AppendFormat格式化sb
Console.WriteLine("{0}\t{1}", i,rndstr); //显示产生的随机数
}
File.AppendAllText("c:\\rnd.txt", sb.ToString()); //采用AppendAllText方法输出结果
}
}
}