我想用下面的代碼使用極性排斥法創建一個隨機數矩陣。我沒有看到任何錯誤,但控制檯不顯示任何結果。我的代碼如下:使用極性排斥的隨機數矩陣
class Program
{
static void Main(string[] args)
{
Program.GenerateRandom();
}
public static void GenerateRandom()
{
Console.WriteLine("Please enter newtrials.");
int newTrials=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please enter Steps.");
int newSteps = Convert.ToInt32(Console.ReadLine());
int i = 0;
int j = 0;
double[,] v = new double[newTrials,newSteps];
double[,] d = new double[newTrials, newSteps];
double[,] l = new double[newTrials, newSteps];
double[,] Z = new double[newTrials, newSteps];
for (i = 0; i < newTrials; ++j)
{
for (j = 0; j < newSteps; ++i)
{
do
{
Random rnd = new Random();
v[i, j] = 2 * rnd.NextDouble() - 1;
d[i, j] = 2 * rnd.NextDouble() - 1; ;
l[i, j] = Math.Pow(v[i, j], 2) + Math.Pow(d[i, j], 2);
}
while (l[i, j] >= 1.0);
}
Z[i, j] = Math.Sqrt(-2 * Math.Log(l[i, j])/l[i, j]) * v[i, j];
}
Console.WriteLine("values are:{0},{1}",Z[0,0],Z[0,1]);
Console.ReadLine();
}
}
}
你永遠j增加在你的代碼。在您的for循環中反向++ i,++ j,即在第一個循環中使用++ i,在第二個循環中使用++ j。 –
作爲一個方面說明,如果你在你的循環中實例化Random,你會根據系統時間獲得很多重複的數字作爲Random的種子。你應該在循環之外移動實例。 – Enigmativity