c - 使用 D.Knuth 伪随机生成器

标签 c random modularity

我需要写一个物理模拟软件,我需要用到pseudo-random generator written by D.Knuth ,因为它最适合我的需要。

虽然我知道如何在硬代码块(仅仅是#include "rng-double.c")中使用它,但我不太明白如何将它包含在需要它的模块化程序中main 和一些库内部,然后我通过头文件链接回 main。

我唯一需要的函数是 ranf_start(seed) 来为生成器播种,以及 ranf_arr_next() 来生成下一个数字。

我得到了一系列的

multiple definitions of 'foo'

几乎适用于随机数生成器代码中定义的每个函数。

我不是专家,所以我发现自己几乎陷入了死胡同。有出路吗?我目前正在尝试为 rng 编写一个头文件,但我还没有成功。

非常感谢大家。 ~J

编辑: 从第一个答案来看,我需要编写头文件。我为生成器中的大多数函数都这样做了,但我无法为实际生成数字的函数编写正确的代码。我应该如何为这样定义的函数编写 header ?

#define ranf_arr_next() (*ranf_arr_ptr>=0? *ranf_arr_ptr++: ranf_arr_cycle())

最佳答案

您不包含 .c 文件,而是包含相应的头文件,其中包含您的函数声明。 .c 文件将与其余文件一起编译。

关于c - 使用 D.Knuth 伪随机生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954195/

相关文章:

无法离开循环

c - C 中返回值周围的括号

c++ - 保持大型 C++ 项目模块化的建议?

c - rand() 在 valgrind 中使用时生成不同的值

Backbone.js 模块化设置

java - OSGi 可以帮助降低复杂性吗?

c++ - 打印指向 uchar 值的指针

我们可以将格式说明符字符串的地址传递给 printf

c - 我应该在我的程序中添加什么额外的代码?

c++ - std::uniform_int_distribution 不够随机