[代码模板]随机数的获取

原创 2007年09月25日 15:11:00

 

C#的随机函数类Random是用来产生伪随机数(Pseudo-random numbers)的类。其原理是利用一个Seed,通过Next()方法,以相等的几率来抽取一个有限数集合中的其中一个,来作为随机数。在C#中,这个抽取方法,是根据Donald E. Knuth所提出的方法来实现的。

伪随机数有一个很大的问题,就是对于相同的Seed,会产生相同的随机数。为了让Seed不同,C#默认使用时间来作为Seed。这在很多对时间要求不很严格,只是偶尔获取一个随机数的程序中,是没有问题的。但是,如果要求产生100个随机数,那问题就出来了。会有一大堆的随机数相同。

这个函数就是为了解决这个问题的。它利用GUID来获取种子,使得每一个随机数的种子完全不同,这样,随机数也就完全不同了。利用此函数获取1000个随机数,重复随机数为0,基本可满足实际应用的需要。

/**//// <summary>
        
/// 获得一个随机数
        
/// </summary>
        
/// <param name="Length">随机数的长度</param>
        
/// <returns>随机数</returns>

        public static string GetRandomNo(int Length)
        
...{
            
int seed = 0;
            
...{
                
byte[] idArray = Guid.NewGuid().ToByteArray();
                
int id1, id2, id3, id4;
                id1 
= id2 = id3 = id4 = 0;
                id1 
|= (int)idArray[0];
                id1 
|= (int)idArray[1<< 8;
                id1 
|= (int)idArray[2<< 16;
                id1 
|= (int)idArray[3<< 24;

                id2 
|= (int)idArray[4];
                id2 
|= (int)idArray[5<< 8;
                id2 
|= (int)idArray[6<< 16;
                id2 
|= (int)idArray[7<< 24;

                id3 
|= (int)idArray[8];
                id3 
|= (int)idArray[9<< 8;
                id3 
|= (int)idArray[10<< 16;
                id3 
|= (int)idArray[11<< 24;

                id4 
|= (int)idArray[12];
                id4 
|= (int)idArray[13<< 8;
                id4 
|= (int)idArray[14<< 16;
                id4 
|= (int)idArray[15<< 24;

                seed 
= id1 ^ id2 ^ id3 ^ id4;
            }


            
string RandomNo = "";
            
string BaseStr = "0123456789";
            Random rand 
= new Random(seed);

            
while (RandomNo.Length < Length)
            
...{
                RandomNo 
= RandomNo + BaseStr[rand.Next(BaseStr.Length)];
            }


            
return RandomNo;
        }
 

页面模板动态生成html

1:建立一个html页面模板,在这个页面中把你想要动态显示的地方用特殊的字符串表示(如$htmlstrstr$);2:在程序中用将这个html页面读到一个字符串变量如str;3:用字符串的respla...

2016黑龙江省赛problemB *随机数*已知三点求外接圆圆心模板

首先有一个随机数的概念: srand和rand()配合使用产生伪随机数序列。rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种...

猜随机数的java代码

  • 2009年05月14日 15:31
  • 621B
  • 下载

c++随机数生成代码

  • 2014年02月24日 18:36
  • 1KB
  • 下载

配置实现-自创html生成模板搭配xml获取数据无需写代码实现静态网站

自创html生成模板搭配xml获取数据无需写代码实现静态网站 实际项目:老干部和九重阳网站 欢迎访问 http://www.laoganbu.org http://www.9chongyang.co...

随机数c代码

  • 2016年06月29日 13:59
  • 460KB
  • 下载

srand函数和rand函数产生随机数代码示例

最近在写东西时需要用到随机函数产生一组一定范围的不重复的数字,于是上网查资料学习了一下随机函数的使用,下面我就不赘述原理及用法了,直接上代码。 《一》加入判断,直到存储完毕为止 #include ...

猜随机数java代码

  • 2013年06月02日 21:52
  • 37KB
  • 下载

击鼓传花代码(随机数算法)

  • 2010年12月02日 09:22
  • 264KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[代码模板]随机数的获取
举报原因:
原因补充:

(最多只允许输入30个字)