double[] result = new double[trials];
for (int i = 0; i < trials; i++)
{
result[i] = s;
for (int j = 0; j < Form1.n; j++)
{
result[i] = result[i] * Math.Exp((r - sigma * sigma / 2) * t / Form1.n + sigma * Math.Sqrt(t / Form1.n) * Form1.randoms[beginwith+i, j]);
}
}
在单线程下运行没有问题,但在多线程下运行有时会“抽风”,得到的result是一列空值或无穷值,经检验是因为Form1.randoms[beginwith+i, j]有时会被视作空值或无穷值,这是为什么啊,按理说通过beginwith这个变量错开了不同线程读取的Form1.randoms行数,而且只是读取不是修改,应该不会出现同步异步问题的吧
for (int i = 0; i < trials; i++)
{
result[i] = s;
for (int j = 0; j < Form1.n; j++)
{
result[i] = result[i] * Math.Exp((r - sigma * sigma / 2) * t / Form1.n + sigma * Math.Sqrt(t / Form1.n) * Form1.randoms[beginwith+i, j]);
}
}
在单线程下运行没有问题,但在多线程下运行有时会“抽风”,得到的result是一列空值或无穷值,经检验是因为Form1.randoms[beginwith+i, j]有时会被视作空值或无穷值,这是为什么啊,按理说通过beginwith这个变量错开了不同线程读取的Form1.randoms行数,而且只是读取不是修改,应该不会出现同步异步问题的吧