把生成随机数的函数写在自定义头文件里,结果生成的随机数是相同

2015-05-06 17:23:50 +08:00
 DrakeLeung
// util.h
#include <time.h>

int createRandom(min, max) {
    srand(time(NULL));

    if (!min) min = 0;
    return rand() % max + min;
}

我试着打印出time(NULL), 发现都是相同的。

3047 次点击
所在节点    程序员
8 条回复
yahoo21cn
2015-05-06 17:27:08 +08:00
因为在同一秒内所以导致随机种子相同了吧
XadillaX
2015-05-06 17:28:18 +08:00
`srand()` 函数在整个程序里面只需要执行一次就够了。
123123
2015-05-06 18:21:29 +08:00
就如楼上说的执行一次就够了
不过你这个种子值设置的也有问题
会导致每次生成同样的数列
bdbai
2015-05-06 18:27:29 +08:00
把生成的随机数存起来 下次发现重复就等一会
ho121
2015-05-06 18:48:27 +08:00
为什么在头文件中写函数定义
bjzhush
2015-05-06 19:44:09 +08:00
加个参数seed,传入当前毫秒级时间
sandideas
2015-05-06 19:48:58 +08:00
用time当做随机数的种子就可以了
DrakeLeung
2015-05-07 23:43:51 +08:00
@XadillaX 我试了可以。但是这样的话,我怎么封装`createNumber()`函数啊?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/188961

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX