如何根据其他数组中生成的最低值创建数组?我创建了一个生成-1000到1000之间数字的数组,并计算出该数字中的最小数字;我的问题是在我相信之后。我无法弄清楚如何将最低值添加到" lowestNumbers"阵列。
static void Main(string[] args)
{
//ints and arrays used in the program.
int min = -1000;
int max = 1000;
int currentMinimum = 1000;
int[] numbers = new int[10];
int[] lowestNumbers = new int[numbers.Length];
Random rndm = new Random();
//Using a loop to create random numbers within numbers array between -1000 and 1000.
for (int i = 0; i < lowestNumbers.Length; i++)
{
if (i < lowestNumbers.Length)
{
for (int index = 0; index < numbers.Length; index++)
{
if (index < numbers.Length)
{
numbers[index] = rndm.Next(min, max);
}
}
for (int index = 0; index < numbers.Length; index++)
{
if (numbers[index] < currentMinimum)
currentMinimum = numbers[index];
}
}
lowestNumbers[i] = currentMinimum;
}
foreach (int value in lowestNumbers)
Console.WriteLine(value);
Console.WriteLine("//////////////////////////////////////////////////////////////////////////");
}
}
}
答案 0 :(得分:1)
使用Linq的力量:
var numbers = Enumerable.Range(1, 100).Select(_ => rndm.Next(min, max)).ToArray();
var lowest = numbers.Min();
答案 1 :(得分:0)
基于@Laoujin的答案,但略微扩大了一点。
这将生成1000个整数,从-1000到1000,并给出一个100最低的数组。我在Random.Next(Int32, Int32)
的通话中将1
添加到max
,因为maxValue
独占,否则号码1000
将永远不会显示在结果数组中。
var numbers = Enumerable.Range(1, 1000).Select(_ => rndm.Next(min, max+1)).ToArray();
var lowest = numbers.OrderBy(n => n).Take(100).ToArray();
作为一个额外的注释,如果你对第一行中的_
感到困惑(许多人,他们第一次看到它使用这种方式),这通常用于表示未使用的参数一个lambda表达式。在这种情况下,该变量包含通过Enumerable.Range()
调用从Select()
生成的当前数字,但由于它未被使用,因此它名为_
。语言不以任何方式强制执行,这是许多程序员使用的常见模式。
虽然可能包含重复项,但如果你不想要它们,你可以先通过IEnumerable.Distinct()
传递列表,它只返回唯一的项目:
var lowest = numbers.Distinct().OrderBy(n => n).Take(100).ToArray();
如果你想要第一个数组中的绝对最小数字,你可以这样做:
var lowestNumber = numbers.Min();