从1到99随机选择一个数字

时间:2014-03-29 05:14:36

标签: c# .net random

我想从199选择一个随机数。然后再次选择该号码,但这次丢弃之前的号码。有人可以帮助我。

6 个答案:

答案 0 :(得分:2)

private List<int> numbers = Enumerable.Range(0, 100).ToList();
private Random rnd = new Random();

public int GetRandomInt()
{
    var index = rnd.Next(0, numbers.Length);
    var number = numbers[index];
    numbers.RemoveAt(index);
    return number;
}

答案 1 :(得分:2)

这就是我要做的事情:

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

您实际上是将数字列表随机化,然后将它们添加到堆栈中。现在你只需要这样做就可以得到每个数字:

var next = numbers.Pop()

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

答案 2 :(得分:0)

我通常用数组做。

每当你创建一个只是放在数组上的随机数。所以下次检查是否已经通过检入数组生成了数字。

答案 3 :(得分:0)

试试这个

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

答案 4 :(得分:0)

以下是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);
        }

答案 5 :(得分:0)

我可以使用最短的代码,没有嵌套循环或删除列表元素。

代码1

class Program
{
    static Random rnd=new Random();
    static void Main(string[] args)
    {
        var list=new SortedDictionary<double, int>();
        // Fill list
        for (int i=1; i<=99; i++)
        {
            list.Add(rnd.NextDouble(), i);
        }
        // List Automatically random
        var random_int=list.Values.ToArray();
        // random_int = {45, 7, 72, .. }
    }
}

代码2

class Program
{
    static Random rnd=new Random();
    static void Main(string[] args)
    {
        var list=new int[99];
        // Fill list
        for (int i=1; i<=99; i++)
        {
            list[i-1]=i;
        }
        Comparison<int> any=(x, y) =>
        {
            var z=2*rnd.NextDouble()-1;
            return z.CompareTo(0);
        };
        // Randomize List
        Array.Sort(list, any);
        // list = { 49, 59, 21, 7, 18 ...}
    }
}