【发布时间】:2021-07-08 20:09:03
【问题描述】:
我的程序中有两个列表的长度不相等。我想逐个元素地减去这两个列表的成员并将它们保存在一个列表中。
List<double> arrivals = new List<double>();
List<double> departure = new List<double>();
List<double> delays = new List<double>();
double departure_p = 0.8;
double arrival_p = 0.45;
int slot = 0;
while (slot < 1000)
{
Random a = new Random();
double arrival_t = a.NextDouble();
Random d = new Random();
double departure_t = d.NextDouble();
if (departure_t <= departure_p)
{
departure.Add(departure_t);
}
if (arrival_t <= arrival_p)
{
arrivals.Add(arrival_t);
}
slot++;
}
当我使用这种方法时,我遇到了异常 system.IndexOutOfRangeException。
for (int i = 0; i <= arrivals.Count; i++)
{
delays.Add(departure[i] - arrivals[i]);
}
foreach (var item in delays)
Console.WriteLine(item);
我该怎么做?
【问题讨论】:
-
如果列表长度不同,请edit 澄清 OP 想要实现的目标。他们没有在昨天的版本中澄清它......所以希望现在有人知道他们想要什么。
-
您的要求似乎不完整。当一个列表的元素比另一个列表多时,期望的行为是什么?当您实际上没有配对时,进行配对减法没有多大意义。我们应该只包括匹配对吗?我们是否应该将未到达的航班视为到达
DateTime.Now?等等。 -
for (int i = 0; i < Math.Min(arrivals.Count, depart.Count); i++) {...} -
new Random().NextDouble()总是得到相同的结果,你需要缓存Random对象
标签: c#