C# 在C中获取随机mongo DB记录#

C# 在C中获取随机mongo DB记录#,c#,.net,mongodb,random,C#,.net,Mongodb,Random,我在从mongoDB获取数据时遇到了一个问题,但这并不是每次都会发生(这很难跟踪)。情况如下: 我尝试通过以下操作从mongo收集中获取随机数据: var database = MongoClientWrapper.GetDb(); var coll = database.GetCollection<CollectionName>("CollectionName"); var collCount = (int)coll.Count(); var rnd = Helper.Getra

我在从mongoDB获取数据时遇到了一个问题,但这并不是每次都会发生(这很难跟踪)。情况如下:

我尝试通过以下操作从mongo收集中获取随机数据:

var database = MongoClientWrapper.GetDb();
var coll = database.GetCollection<CollectionName>("CollectionName");

var collCount = (int)coll.Count();
var rnd = Helper.Getrandom.Next(0, collCount);
var sgs = coll.FindOneAs<CollectionName>(Query<CollectionName>.EQ( s => s.Id, rnd));

if (sgs == null) return null;

return sgs;
var-database=MongoClientWrapper.GetDb();
var coll=database.GetCollection(“CollectionName”);
var collCount=(int)coll.Count();
var rnd=Helper.Getrandom.Next(0,collCount);
var sgs=coll.FindOneAs(Query.EQ(s=>s.Id,rnd));
if(sgs==null)返回null;
返回sgs;
这是在一个循环中调用的函数中,我必须获得15-20项的信息。它大多数时候都能工作,但有时它会返回循环中15个元素的相同记录(我不相信巧合)。您是否会这样想:
var sgs=new CollectionName()在函数的开头会有什么不同?还有别的想法吗


谢谢。

您应该在随机类的开头添加一些种子值,该值是数字的基础。我喜欢下面这个:

Random rnd = new Random(Guid.NewGuid().GetHashCode());

希望这能有所帮助。

您是否正在播种随机数生成器?看到没有,我正在使用new Random()。Next()但是播种Random()有什么意义?根据您的实现,您的随机数助手可以反复返回相同的值,看到了吗!我理解为什么有时它会起作用!非常感谢。谢谢你!我现在将为我的Random()使用一个种子!