第 1 部分:我想要实现的只是将数字 1、2、3 ... 8、9、10 以随机顺序写入控制台窗口。所以所有的数字都需要写入控制台窗口,但它们的顺序必须是随机的。
第 2 部分:在我的实际项目中,我计划将数组中的所有元素以随机顺序写入控制台窗口。我假设如果我能得到第 1 部分的答案,我应该可以很容易地用一个数组来实现它。
第 1 部分:我想要实现的只是将数字 1、2、3 ... 8、9、10 以随机顺序写入控制台窗口。所以所有的数字都需要写入控制台窗口,但它们的顺序必须是随机的。
第 2 部分:在我的实际项目中,我计划将数组中的所有元素以随机顺序写入控制台窗口。我假设如果我能得到第 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);
}
Enumerable.Range(1, 10).OrderBy(i => Guid.NewGuid())
效果很好。
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;
}
}
}
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());
}