我有以下Matlab代碼:在MatLab和JAVA中生成完全相同的隨機數字?
randn('seed', 1);
rand('seed', 1);
A = 0.1*randn(5, 10)
我想寫產生正是相同的結果Java代碼。
這裏是我的Java代碼:
import java.util.Random;
import java.lang.Math;
public class HelloWorld
{
static double[][] random_normal_matrix(Random r, int x, int y)
{
double tmp[][] = new double[x][y];
for(int i = 0; i < x; i++)
for(int j = 0; j < y; j++)
tmp[i][j] = 0.1*r.nextGaussian();
return tmp;
}
public static void main(String[] args)
{
Random r = new Random();
r.setSeed(1);
double tmp[][] = random_normal_matrix(r, 5, 10);
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 10; j++)
System.out.print(tmp[i][j]+" ");
System.out.println();
}
}
}
正如你可以看到,如果你運行的代碼,這裏https://octave-online.net/這裏https://www.compilejava.net/的結果有很大的不同。這個問題不僅僅是精度上的差異。
有人可以請解釋我如何能得到相同的結果嗎?
你想讓兩個隨機數發生器給你相同的行爲? –
「隨機數字的產生是通過隨機數發生器(RNG)產生的數字或符號序列,不能合理地預測好於隨機機會。」 – e4c5
我正在使用相同的種子值。由於輸出是確定性的,應該有可能用相同的種子值得到相同的結果。 –