-2

第 1 部分:我想要实现的只是将数字 1、2、3 ... 8、9、10 以随机顺序写入控制台窗口。所以所有的数字都需要写入控制台窗口,但它们的顺序必须是随机的。

第 2 部分:在我的实际项目中,我计划将数组中的所有元素以随机顺序写入控制台窗口。我假设如果我能得到第 1 部分的答案,我应该可以很容易地用一个数组来实现它。

4

4 回答 4

1
/// <summary>
/// Returns all numbers, between min and max inclusive, once in a random sequence.
/// </summary>
IEnumerable<int> UniqueRandom(int minInclusive, int maxInclusive)
{
    List<int> candidates = new List<int>();
    for (int i = minInclusive; i <= maxInclusive; i++)
    {
        candidates.Add(i);
    }
    Random rnd = new Random();
    while (candidates.Count > 0)
    {
        int index = rnd.Next(candidates.Count);
        yield return candidates[index];
        candidates.RemoveAt(index);
    }
}

在你的程序中

Console.WriteLine("All numbers between 0 and 10 in random order:");
foreach (int i in UniqueRandom(0, 10)) {
    Console.WriteLine(i);
}
于 2013-06-20T09:57:08.550 回答
0

Enumerable.Range(1, 10).OrderBy(i => Guid.NewGuid())效果很好。

于 2013-06-20T09:44:36.200 回答
0
using System;
using System.Collections;

namespace ConsoleApplication
{
    class Numbers
    {
        public ArrayList RandomNumbers(int max)
        {
            // Create an ArrayList object that will hold the numbers
            ArrayList lstNumbers = new ArrayList();
            // The Random class will be used to generate numbers
            Random rndNumber = new Random();

            // Generate a random number between 1 and the Max
            int number = rndNumber.Next(1, max + 1);
            // Add this first random number to the list
            lstNumbers.Add(number);
            // Set a count of numbers to 0 to start
            int count = 0;

            do // Repeatedly...
            {
                // ... generate a random number between 1 and the Max
                number = rndNumber.Next(1, max + 1);

                // If the newly generated number in not yet in the list...
                if (!lstNumbers.Contains(number))
                {
                    // ... add it
                    lstNumbers.Add(number);
                }

                // Increase the count
                count++;
            } while (count <= 10 * max); // Do that again

            // Once the list is built, return it
            return lstNumbers;
        }
    }

主要的

  class Program
    {
        static int Main()
        {
            Numbers nbs = new Numbers();
            const int Total = 10;
            ArrayList lstNumbers = nbs.RandomNumbers(Total);

            for (int i = 0; i < lstNumbers.Count; i++)
                Console.WriteLine("{0}", lstNumbers[i].ToString());

            return 0;
        }
    }
}
于 2013-06-20T09:50:31.610 回答
-2
int[] ints = new int[11];
Random rand = new Random();

Random 是 .NET 中内置的一个类,它允许我们非常非常容易地创建随机整数。基本上我们所要做的就是在我们的 rand 对象中调用一个方法来获取那个随机数,这很好。因此,在我们的循环中,我们只需将每个元素设置为该方法的结果:

for (int i = 0; i < ints.Length; i++)
{
  ints[i] = rand.Next(11);
}

我们基本上在这里用随机数填充整个数组,都在 0 到 10 之间。此时我们要做的就是为用户显示内容,这可以通过 foreach 循环来完成:

foreach (int i in ints)
{
  Console.WriteLine(i.ToString());
}
于 2013-06-20T09:46:41.447 回答