您好 我想要随机没有。问题为此,我在asp.net中使用随机函数,但问题重复。 我怎么能得到不重复的问题。 C#。 谢谢。
答案 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
}
希望这有帮助