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
,它会自动播种并且通常会产生更好的随机数。
我正在尝试使用 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
,它会自动播种并且通常会产生更好的随机数。