从范围中选择,但排除某些数字 [英] Select from a range but exclude certain numbers

查看:75
本文介绍了从范围中选择,但排除某些数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以从给定范围(1-90)中选择一个随机数,但排除某些数字.排除的数字是动态创建的,但可以说它们分别是3、8和80.

Is it possible to pick a random number from a given range (1-90), but exclude certain numbers. The excluded numbers are dynamically created but lets say they are 3, 8, and 80.

我设法创建了随机数生成器,但是无法识别任何可以满足我要求的功能.

I have managed to create random number generator but couldn't identify any functions that let me fulfill my requirements.

Random r = new Random();
this.num = r.Next(1, 90);

要排除的数字是先前生成的数字.因此,如果随机数为1,则将其添加到排除的数字列表中.

The numbers which are to be excluded are previously generated numbers. So, if the random number is one, this would then get added to the excluded numbers list.

推荐答案

此处使用一些方便的扩展方法,您可以创建一个数字范围并从该范围内随机选择.例如,使用以下扩展方法:

Using some handy extension methods here, you can create a range of numbers and select randomly from that rage. For example, with these extension methods:

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);
}

您可以将它们应用于过滤后的数字范围:

You can apply these to a filtered range of numbers:

var random = Enumerable.Range(1, 90).Except(arrayOfRemovedNumbers).RandomElement();

这篇关于从范围中选择,但排除某些数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆