我正在开发一个项目,我将一些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中,我可以获得相同的随机数?
答案 0 :(得分:1)
C中的Java Random类和rand使用两个不同的伪随机数生成器。您将无法使用C语言重现与C完全相同的随机数。
您编写应用程序的方式应该避免取决于具有完全相同的随机数。
答案 1 :(得分:-1)
Java JDK源是公开的。
如果你想要在C中使用Java的随机数生成器,请抓住源代码并自行编写/移植它。