gpt4 book ai didi

java - 在 MatLab 和 JAVA 中生成完全相同的随机数?

转载 作者:行者123 更新时间:2023-12-01 17:57:11 25 4
gpt4 key购买 nike

我有以下 MatLab 代码:

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的文档页面:

...

rng(seed, generator) and rng('shuffle', generator) additionally specify the type of the random number generator used by rand, randi, and randn. The generator input is one of:

  1. 'twister': Mersenne Twister

  2. 'simdTwister': SIMD-oriented Fast Mersenne Twister

  3. 'combRecursive': Combined Multiple Recursive

  4. 'multFibonacci': Multiplicative Lagged Fibonacci

  5. 'v5uniform': Legacy MATLAB® 5.0 uniform generator

  6. 'v5normal': Legacy MATLAB 5.0 normal generator

  7. 'v4': Legacy MATLAB 4.0 generator

...

rng('default') puts the settings of the random number generator used by rand, randi, and randn to their default values. This way, the same random numbers are produced as if you restarted MATLAB. The default settings are the Mersenne Twister with seed 0.

因此,在 MATLAB 中您可以选择用于随机数生成的算法。假设您使用的是最新版本的 MATLAB,您目前使用的是带有种子 1 的 Mersenne-Twister。

注意:Octave 的行为不一定与 MATLAB 相同。

我不知道Java方面的事情,所以你应该查一下你正在使用的包中使用了什么算法。

在 MATLAB 命令行中输入 doc rng 以查看我引用的文档页面。

关于java - 在 MatLab 和 JAVA 中生成完全相同的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43780362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com