C# 从1到99之间随机选择一个数字

C# 从1到99之间随机选择一个数字,c#,.net,random,C#,.net,Random,我想从1到99中选择一个随机数。然后再次选择该号码,但这次放弃上一个号码。有人能帮我吗。我通常用数组 无论何时创建一个随机数,只需将其放入数组中即可。所以下次检查是否已经通过检查数组生成了数字。我通常使用数组 无论何时创建一个随机数,只需将其放入数组中即可。因此,下次检查该数字是否已通过在数组中进行检查而生成。试试这个 IList<int> arr = Enumerable.Range(1, 99).ToList(); int rand

我想从
1
99
中选择一个随机数。然后再次选择该号码,但这次放弃上一个号码。有人能帮我吗。

我通常用数组


无论何时创建一个随机数,只需将其放入数组中即可。所以下次检查是否已经通过检查数组生成了数字。

我通常使用数组

无论何时创建一个随机数,只需将其放入数组中即可。因此,下次检查该数字是否已通过在数组中进行检查而生成。

试试这个

            IList<int> arr = Enumerable.Range(1, 99).ToList();
            int randNum;
            Random rnd = new Random();
            randNum = rnd.Next(1, arr.Count());
            MessageBox.Show(randNum.ToString());
            arr = arr.Where(x => x != randNum).ToList();
IList arr=Enumerable.Range(1,99).ToList();
int-randNum;
随机rnd=新随机();
randNum=rnd.Next(1,arr.Count());
Show(randNum.ToString());
arr=arr.Where(x=>x!=randNum.ToList();
试试这个

            IList<int> arr = Enumerable.Range(1, 99).ToList();
            int randNum;
            Random rnd = new Random();
            randNum = rnd.Next(1, arr.Count());
            MessageBox.Show(randNum.ToString());
            arr = arr.Where(x => x != randNum).ToList();
IList arr=Enumerable.Range(1,99).ToList();
int-randNum;
随机rnd=新随机();
randNum=rnd.Next(1,arr.Count());
Show(randNum.ToString());
arr=arr.Where(x=>x!=randNum.ToList();
私有列表编号=可枚举的.Range(01100).ToList();
私有随机rnd=新随机();
公共int GetRandomInt()
{
var指数=rnd.Next(0,数字.长度);
var编号=编号[索引];
数字。删除(索引);
返回号码;
}
私有列表编号=可枚举的.Range(01100).ToList();
私有随机rnd=新随机();
公共int GetRandomInt()
{
var指数=rnd.Next(0,数字.长度);
var编号=编号[索引];
数字。删除(索引);
返回号码;
}

以下是Khanh TO的修订版,因为它不正确:

        List<int> usedNumbers = new List<int>();

        Random rand = new Random(new object().GetHashCode());
        int number = 0;
        for (int i = 0; i < 99; i++)
        {
            do
            {
                number = 1 + rand.Next(0, 99);
            } while (usedNumbers.Contains(number));
            usedNumbers.Add(number);
        }
List usedNumbers=new List();
Random rand=new Random(new object().GetHashCode());
整数=0;
对于(int i=0;i<99;i++)
{
做
{
数字=1+rand.Next(0,99);
}while(usedNumbers.Contains(number));
使用编号。添加(编号);
}

以下是Khanh TO的修订版,因为它不正确:

        List<int> usedNumbers = new List<int>();

        Random rand = new Random(new object().GetHashCode());
        int number = 0;
        for (int i = 0; i < 99; i++)
        {
            do
            {
                number = 1 + rand.Next(0, 99);
            } while (usedNumbers.Contains(number));
            usedNumbers.Add(number);
        }
List usedNumbers=new List();
Random rand=new Random(new object().GetHashCode());
整数=0;
对于(int i=0;i<99;i++)
{
做
{
数字=1+rand.Next(0,99);
}while(usedNumbers.Contains(number));
使用编号。添加(编号);
}

我可以选择最短的代码,不使用嵌套循环或删除列表元素

代码1
类程序
{
静态随机rnd=新随机();
静态void Main(字符串[]参数)
{
var list=新的SortedDictionary();
//填写清单

对于(inti=1;i我可以选择最短的代码,而不使用嵌套循环,或者删除列表元素

代码1
类程序
{
静态随机rnd=新随机();
静态void Main(字符串[]参数)
{
var list=新的SortedDictionary();
//填写清单
对于(inti=1;i,我会这样做:

var rnd = new Random();
var numbers = new Stack<int>(Enumerable.Range(1, 99).OrderBy(x => rnd.Next()));
numbers.Count==0时停止。很简单。

以下是我要做的:

var rnd = new Random();
var numbers = new Stack<int>(Enumerable.Range(1, 99).OrderBy(x => rnd.Next()));

numbers.Count==0
时停止。简单。

放弃前一个数字意味着每次都要生成唯一的数字吗?是,应该从其余数字中选择否。我想编写一个名为Housie的游戏。放弃前一个数字意味着每次都要生成唯一的数字吗?是,应该选择否我想编写一个名为Houssivery nice的游戏,但是序列需要1到99之间的范围:应该避免零。我为一个生成按钮编写代码。所以每次单击生成它都会生成唯一的数字,对吗?非常好,但是序列需要1到99之间的范围:应该避免零避免。我写这个代码是为了一个生成按钮。所以每次我点击生成它都会生成唯一的数字对吗?这个代码会给我1个随机的没有权利。当我必须随机查找下一个否时,我也必须使用相同的代码?不确定是否理解。上面的代码生成一个数字列表,正如你所问的。列表继续ns已经是将被提取的数字序列。除非你想重新开始游戏,否则你不必重新运行代码。然而,神秘性的解决方案是最优雅的。MarcinJuraszek的解决方案也是很有价值的。我发布这一个仅仅是因为原始代码是错误的。这段代码将给我1个随机错误。当我为了随机找到下一个no,我还必须使用相同的代码?????不确定是否理解。上面的代码生成了一个数字列表,正如你所要求的。该列表已经包含了将被提取的数字序列。你不必重新运行代码,除非你想再次开始游戏。然而,谜的解决方案是最简单的MarcinJuraszek的一个也很有价值。我发布这一个仅仅是因为原始代码是错误的。
var next = numbers.Pop()