Java Random.nextInt(int bound) 方法的精确 C 等价物

Exact C equivalent of Java Random.nextInt(int bound) method

我正在做一个项目,我将一些 Java 代码移植到 C 中。到现在为止一切都很顺利,但我一直坚持将 Random.nextInt(int bound) 方法移植到 C 中。

我的Java代码是:

int arr[] = new int[100000];
Random r = new Random(0);
for (int i = 0; i < 100000; i++)
    arr[i] = r.nextInt(20);

其中 arr 数组始终具有相同的内容(每次执行后),这是正常的。

我的等效 C 代码是:

int arr[100000], i;

srand(0);
for (i = 0; i < 100000: i++)
    arr[i] = rand() % 20;

两个arr数组的内容不一样

我想在 Java 代码中将生成的随机数打印到一个文件中,以便将它们(数字)用作 C 代码中的常量数组,而不是使用 rand() 函数,但大小该数组将非常大,这将阻止我这样做,因为 C 代码将在嵌入式设备(微控制器)上运行。

我的问题是如何将 Java 代码移植到 C 语言中以获得相同的随机数?

C中的JavaRandomclass和rand使用了两种不同的伪随机数生成器。您将无法使用 C 重现与使用 Java.

完全相同的随机数

您应该避免使用完全相同的随机数编写应用程序的方式。

Java JDK 来源是公开的。

如果您想要一个与 Java 的随机数生成器完全相同的 C 语言,请自行获取源代码并write/port。