我需要一个快速算法从通用列表中选择5个随机元素.例如,我想从a获得5个随机元素List<string>.
当我有条件时,使用Linq to SQL检索随机行的最佳(和最快)方法是什么,例如某些字段必须为true?
有人可以请我指向一个更简洁的方法来生成随机枚举成员.这有效,但看起来很难看.
谢谢!
public T RandomEnum<T>()
{
string[] items = Enum.GetNames(typeof( T ));
Random r = new Random();
string e = items[r.Next(0, items.Length - 1)];
return (T)Enum.Parse(typeof (T), e, true);
}
Run Code Online (Sandbox Code Playgroud) 是否可以从给定范围(1-90)中选择一个随机数,但不包括某些数字.排除的数字是动态创建的,但可以说它们分别为3,8和80.
我已设法创建随机数生成器,但无法识别任何让我满足我的要求的功能.
Random r = new Random();
this.num = r.Next(1, 90);
Run Code Online (Sandbox Code Playgroud)
要排除的数字是先前生成的数字.因此,如果随机数为1,则会将其添加到排除的数字列表中.
var list = new List<int>(){1,17,18,21,30};
Random rnd = new Random(DateTime.Now.Second);
int r;
do
{
r = rnd.Next(1, 30);
}
while (list.Contains(r));
Run Code Online (Sandbox Code Playgroud)
但我认为这是一个愚蠢的解决方案,任何人都可以给我一个更优化的方法吗?
如果有一种方法可以阻止Random实例返回已经返回的数字,那就更好了.
如果有人想知道我为什么需要这个,它是改组3字节数组并将它们组合成一个字节数组并生成3字节数组的第一步,它保存索引原始顺序,就像它在原始数组中一样.