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。
我正在做一个项目,我将一些 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。