我收集的:
--------------------------
大家可能都用过Chinaren的校友录,不久前它的留言簿上加了一个防止灌水的方法,就是系统每次产生一个由随机的数字和字母组成的图片,每次留言必须正确地输入这些随机产生的字符,否则不能添加留言。这是一个很好的防止恶意攻击的方法,其核心的技术就是如何产生随机数。Chinaren网站是使用PHP实现的,而我们可以充分利用ASP.net的强大功能很轻易地实现。 
在.net Framework中提供了一个专门用来产生随机数的类System.Random,使用这个类时必须导入System命名空间。当然,命名空间System在每个ASP.net页面中都是自动导入的,所以我们可以直接使用这个类。 对于随机数,大家都知道,计算机不可能产生完全随机的数字,所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称作伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。一般地,我们使用同系统时间有关的参数作为随机种子,这也是.net Framework中的随机数发生器默认采用的方法。 我们可以使用两种方式初始化一个随机数发生器: 第一种方法不指定随机种子,系统自动选取当前时间作为随机种子: Random ro = new Random(); 第二种方法可以指定一个int型参数作为随机种子: int iSeed=10; Random ro = new Random(10); 之后,我们就可以使用这个Random类的对象来产生随机数,这时候要用到Random.Next()方法。这个方法使用相当灵活,你甚至可以指定产生的随机数的上下限。 不指定上下限的使用如下: int iResult; iResult=ro.Next(); 下面的代码指定返回小于100的随机数: int iResult; int iUp=100; iResult=ro.Next(iUp); 而下面这段代码则指定返回值必须在50-100的范围之内: int iResult; int iUp=100; int iDown=50; iResult=ro.Next(iDown,iUp); 除了Random.Next()方法之外,Random类还提供了Random.NextDouble()方法产生一个范围在0.0-1.0之间的随机的双精度浮点数: double dResult;
dResult=ro.NextDouble();

解决方案 »

  1.   

    随机数的生成是从种子值开始。如果反复使用同一个种子,就会生成相同的数字系列。产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列。[C#] 
    // Example of the Random class constructors and Random.NextDouble( ) 
    // method.
    using System;
    using System.Threading;public class RandomObjectDemo  
    {
        // Generate random numbers from the specified Random object.
        static void RunIntNDoubleRandoms( Random randObj )
        {
            // Generate the first six random integers.
            for( int j = 0; j < 6; j++ )
                Console.Write( " {0,10} ", randObj.Next( ) );
            Console.WriteLine( );        // Generate the first six random doubles.
            for( int j = 0; j < 6; j++ )
                Console.Write( " {0:F8} ", randObj.NextDouble( ) );
            Console.WriteLine( );
        }    // Create a Random object with the specified seed.
        static void FixedSeedRandoms( int seed )
        {
            Console.WriteLine( 
                "\nRandom numbers from a Random object with " +
                "seed = {0}:", seed );
            Random fixRand = new Random( seed );        RunIntNDoubleRandoms( fixRand );
        }    // Create a random object with a timer-generated seed.
        static void AutoSeedRandoms( )
        {
            // Wait to allow the timer to advance.
            Thread.Sleep( 1 );        Console.WriteLine( 
                "\nRandom numbers from a Random object " +
                "with an auto-generated seed:" );
            Random autoRand = new Random( );        RunIntNDoubleRandoms( autoRand );
        }    static void Main( )
        {            Console.WriteLine(
                "This example of the Random class constructors and " +
                "Random.NextDouble( ) \n" +
                "generates the following output.\n" );
            Console.WriteLine(
                "Create Random objects, and then generate and " +
                "display six integers and \nsix doubles from each.");        FixedSeedRandoms( 123 );
            FixedSeedRandoms( 123 );        FixedSeedRandoms( 456 );
            FixedSeedRandoms( 456 );        AutoSeedRandoms( );
            AutoSeedRandoms( );
            AutoSeedRandoms( );
        }
    }/*
    This example of the Random class constructors and Random.NextDouble( )
    generates the following output.Create Random objects, and then generate and display six integers and
    six doubles from each.Random numbers from a Random object with seed = 123:
     2114319875  1949518561  1596751841  1742987178  1586516133   103755708
     0.01700087  0.14935942  0.19470390  0.63008947  0.90976122  0.49519146Random numbers from a Random object with seed = 123:
     2114319875  1949518561  1596751841  1742987178  1586516133   103755708
     0.01700087  0.14935942  0.19470390  0.63008947  0.90976122  0.49519146Random numbers from a Random object with seed = 456:
     2044805024  1323311594  1087799997  1907260840   179380355   120870348
     0.21988117  0.21026556  0.39236514  0.42420498  0.24102703  0.47310170Random numbers from a Random object with seed = 456:
     2044805024  1323311594  1087799997  1907260840   179380355   120870348
     0.21988117  0.21026556  0.39236514  0.42420498  0.24102703  0.47310170Random numbers from a Random object with an auto-generated seed:
      380213349   127379247  1969091178  1983029819  1963098450  1648433124
     0.08824121  0.41249688  0.36445811  0.05637512  0.62702451  0.49595560Random numbers from a Random object with an auto-generated seed:
      861793304  2133528783  1947358439   124230908   921262645  1087892791
     0.56880819  0.42934091  0.60162512  0.74388610  0.99432979  0.30310005Random numbers from a Random object with an auto-generated seed:
     1343373259  1992194672  1925625700   412915644  2026910487   527352458
     0.04937517  0.44618494  0.83879212  0.43139707  0.36163507  0.11024451
    */
      

  2.   

    这样的问题,其实建议搂主先直接搜索msdn或者在csdn上搜索。很多资料的。
      

  3.   

    Random rand = new Random();
    int i = rand.Next();