rand 的 dlsym() 使用失败

dlsym() usage fails for rand

我正在尝试使用 dlfcn.h 调用 rand (d.

this code,基于我正在进行的项目。对我来说核心问题是这样使用时,它编译甚至运行,但它的输出是

cif: cif is OK
rand val: 16807

rand val的值每次都是16807,这与rand应该做的相反。我在这里做错了什么?

您只调用了 rand() 一次。如果未播种,rand() 可能会使用静态种子,可能为零(依赖于库)。

也导入 srand,并以相当随机的数量作为种子 - 例如,您可以这样做

timeval tv;
gettimeofday(&tv, NULL);
srand_ptr(tv.tv_sec ^ tv.tv_usec);

用当前时间(秒和微秒)作为种子。

或者,在 OS X 上,考虑改用 arc4random,它会自动播种并且通常会产生更好的随机数。