关于asp.net中的随机函数c#

时间:2011-03-28 07:21:54

标签: asp.net

您好 我想要随机没有。问题为此,我在asp.net中使用随机函数,但问题重复。 我怎么能得到不重复的问题。 C#。 谢谢。

1 个答案:

答案 0 :(得分:2)

Random的问题通常如下:

以下代码通常会返回一个非常“非随机”的数字序列

        for(int j = 0; j<100; j++)
        {
            Random rnd = new Random();      
            int i = rnd.Next(1, 5);
            Console.WriteLine(i);
        }

以下将创建更随机的数字分布:

        Random rnd = new Random(); 
        for(int j = 0; j<100; j++)
        {

            int i = rnd.Next(1, 5);
            Console.WriteLine(i);
        }

使用Linq可以实现生成随机数的不同方法:

var randomNumber = Enumerable.Range(1, 10).OrderBy(g => Guid.NewGuid()).First();

此方法首先创建一个数字列表(在此示例中为1到10),然后通过创建Guid对该列表进行排序。这会对列表进行洗牌,以便First()具有随机性。我经常依赖这种方法来获取一个随机数,而不是使用Random-class。

<强>更新

假设您想要100个随机数列表中的10个唯一随机数。使用linq-expression,你会这样做:

List<int> tenRandomNumbers = Enumerable.Range(1, 100).OrderBy(g => Guid.NewGuid()).Take(10);

现在你应该能够查看tenRandomNumbers的列表..它们应该是唯一且随机的。

更新2

看一下.Take(int)方法的这个解释: http://msdn.microsoft.com/en-us/vcsharp/aa336757#TakeSimple

上面的代码将返回从100个数字的集合中随机选择的10个数字的列表。你接下来要做的只是:

foreach(int i in tenRandomNumbers){
   // code to fetch your question based on int i
}

希望这有帮助