我有以下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
我正在使用相同的种子值。由于输出是确定性的,应该有可能用相同的种子值得到相同的结果。 –