我有一个非常奇怪但非常重要的问题。因此,如果您有一些空闲时间 - 请阅读下一句话。
我的任务是:为道路上进出的汽车生成值(时间)。而且,从现实世界来看,我有一些变量:道路长度(2000米),平均。汽车(6米),实验时间(12小时)以及进出交通强度(1小时内的汽车数量)。
我需要将所有这些变量转换为机器,知道循环时间等于 10 个单位。步进循环为 1。
10 units = 12 hours
1 units = 1.2 hours (72 minutes)
1 minutes = 0.013888..
所以我必须将所有强度乘以 1.2?要不?我也不知道如何将道路长度输入到程序中。我应该输入2000吗...如果可以的话,请帮助我。
以下是生成随机数的函数
static double RandTimeIn(Random ran, int lambdaMu)
{
double t = 0, r = 0;
r = ran.NextDouble();
t = (-1) * Math.Log(r, Math.E) / lambdaMu;
t *= 60.0 / 72.0;
return t;
}
static double RandTimeOut(Random ran, int Mu) //t from [1.5; 12]
{
double t = 0, r = 0;
t = 1.5 + ran.NextDouble() * (12.0 - 1.5);
t *= 1.0/72.0;
return t;
}
主池:
//step=1.0; T=10.0;
for (double i = step; i <= T; i += step)
{...
tin = RandTime(ran, lambdaTat3);
Tin += tin;
...
CarCount=333; //2000/6. Is it right????? Maybe 333/6
if (CarCount3 < CarCount) //if the road is not full
{...
CarCount3++;
tInArrTat1.Add(Tin);
tout = RandTimeOut(ran, mu3);
Tout = Tin + tout;
...}
else {Error++;}
}
我想知道我必须在道路长度和对象长度中输入哪些变量。
没有真正的预定义方法可以将真实世界的数据转换为完美的虚拟数据。
这真的取决于你试图从数据中得到什么(更具体地说,你想要的答案有多精确以及算法必须有多高效),也是输入的大小,如果你说一天(或 12 小时),我不会这么认为(但这只是一个猜测)。double
型为您提供大多数实际应用的最佳精度(请注意浮点误差,如果您不熟悉,请务必研究它)。如果您需要更多(意味着非常)精确,请查看BigInt
和BigRational
(也许)。WARNIGN,如果您不需要精度,这些很可能会变得麻烦。使用这些会让你的应用程序矫枉过正。
如果你说的是笼统的话,那么你所要做的就是遵守一个标准(意味着做任何你认为必要的事情),那么接下来你要做的是确保你遵守你决定使用的任何单位(标准)。
(假设/
的意思是"或") 从数学上讲,您可以将所有长度都保留为米,并分别坚持米/汽车/单位或米/汽车每小时的速度和频率,以保持简单。如果你想要按单位测量,只需除以 10,如果你想按小时,除以 12。由于您以单位/小时为单位保留了所有内容,因此您所要做的就是除以速度,分别获得汽车将在道路上停留多长时间(如果以该平均速度行驶)的时间(如果以该平均速度行驶)。