是否可以从给定范围(1-90)中选择一个随机数,但排除某些数字。排除的数字是动态创建的,假设它们是 3、8 和 80。
我已经设法创建随机数生成器,但无法识别任何可以满足我的要求的函数。
Random r = new Random();
this.num = r.Next(1, 90);
要排除的数字是先前生成的数字。因此,如果随机数为 1,则会将其添加到排除的数字列表中。
使用一些方便的扩展方法here,您可以创建一系列数字并从该范围中随机选择。例如,使用这些扩展方法:
public static T RandomElement(this IEnumerable<T> enumerable)
{
return enumerable.RandomElementUsing(new Random());
}
public static T RandomElementUsing(this IEnumerable<T> enumerable, Random rand)
{
int index = rand.Next(0, enumerable.Count());
return enumerable.ElementAt(index);
}
您可以将它们应用于过滤后的数字范围:
var random = Enumerable.Range(1, 90).Except(arrayOfRemovedNumbers).RandomElement();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)