C# 如何生成五组随机数
我试图生成五组c顺序的随机数,用最高的数字和逗号分隔 我试着用C# 如何生成五组随机数,c#,random,C#,Random,我试图生成五组c顺序的随机数,用最高的数字和逗号分隔 我试着用 public static void Main(string[] args) { int[] randNumber = new int[5]; Random rand = new Random(); Console.Write("The random numbers are: "); for (int h = 0; h < randNumber.Length; h++) {
public static void Main(string[] args)
{
int[] randNumber = new int[5];
Random rand = new Random();
Console.Write("The random numbers are: ");
for (int h = 0; h < randNumber.Length; h++)
{
randNumber[h] = rand.Next(1, 20);
}
Console.Write(string.Join(", ", randNumber));
}
我只得到一组输出,没有从最高到最低排序,即
随机数是:12,2,12,19,11
预期输出应如下所示:
11,9,7,6,4
13,8,7,6,4
13,9,7,6,2
17.9,7,6,1
1,6,7,4,14
这里有一种方法:
var rnd = new Random();
Console.WriteLine(
string.Join("\n",
Enumerable
.Range(1, 5) // returns an IEnumerable<int> containing 1,2,3,4,5.
.Select(s => // for each int in the IEnumerable
string.Join(",",
Enumerable
.Range(1, 5)
.Select(i => rnd.Next(1, 20)) // get a random number.
.OrderByDescending(r => r) // order the inner IEnumerable
)
)
)
);
只是增强了你的代码
class Program
{
static void Main(string[] args)
{
int[] randNumber = new int[5];
Random rand = new Random();
Console.WriteLine("The random numbers are: ");
for (int i = 0; i < 5; i++)
{
for (int h = 0; h < randNumber.Length; h++)
{
randNumber[h] = rand.Next(1, 20);
}
randNumber = randNumber.OrderByDescending(x => x).ToArray();
Console.WriteLine(string.Join(", ", randNumber));
}
}
}
另一个
static void Main(string[] args)
{
Random R = new Random();
List<List<int>> sets = new List<List<int>>();
for(int s=1; s<=5; s++)
{
List<int> set = new List<int>();
for (int i = 1; i <= 5; i++)
{
set.Add(R.Next(1, 20));
}
set.Sort();
set.Reverse();
sets.Add(set);
}
for(int i=1; i<=sets.Count; i++)
{
Console.WriteLine(i.ToString() + ". " + string.Join(", ", sets[i-1]));
}
Console.Write("Press Enter to quit");
Console.ReadLine();
}
一旦你有了数字,你应该自己排序,例如数组。排序…看看你是如何做for循环的?再做一个围绕现有代码的操作。如果它跑了5次,你就可以走了。还要确保int[]randNumber=new int[5];随机兰德=新的随机;在两个循环之前。也可以像@dcg建议的那样使用排序。您需要另一个循环来执行该代码5次,因为您现在只生成5个数字:为什么第5个集合没有排序?这是故意的吗?试着生成五组,你不需要再打一次这样好的范围吗…选择。。。功夫?也许你应该为linq的东西添加一些解释,因为OP似乎不是C职业,但没有冒犯。@MongZhu不,第二个数字是计数,而不是最大值,所以它将从1开始列举5个数字。看,也许我的措辞不正确。我不是说你需要一个循环。但是当前代码必须重复五次,无论您再次使用循环还是Enumerable.Range。我们现在应该停止这种讨论@MongZhu我添加了另一个范围…选择重复五次。其工作如预期,谢谢你这么多闲心,你真的救了我一天,上帝保佑You@TauheedAlam你明白为什么这段代码会给你想要的结果,为什么你的代码没有?
static void Main(string[] args)
{
Random R = new Random();
List<List<int>> sets = new List<List<int>>();
for(int s=1; s<=5; s++)
{
List<int> set = new List<int>();
for (int i = 1; i <= 5; i++)
{
set.Add(R.Next(1, 20));
}
set.Sort();
set.Reverse();
sets.Add(set);
}
for(int i=1; i<=sets.Count; i++)
{
Console.WriteLine(i.ToString() + ". " + string.Join(", ", sets[i-1]));
}
Console.Write("Press Enter to quit");
Console.ReadLine();
}
1. 19, 18, 12, 9, 3
2. 18, 17, 15, 5, 3
3. 18, 11, 9, 7, 1
4. 13, 12, 10, 10, 6
5. 12, 6, 5, 5, 3
Press Enter to quit