Programming 版 (精华区)
发信人: JJason (总统~~), 信区: Programming
标 题: [合集]用c语言的函数生成的随机数为什么是一样的??
发信站: 哈工大紫丁香 (2003年03月20日17:11:58 星期四), 站内信件
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日15:33:56 星期天 说道:
srand((unsigned)time(NULL));
r=rand();
为什么生成的随机数都是一样的呢?
────────────────────────────────────────
Anna (冷冷星光+|+忧伤) 于 2003年03月02日15:35:46 星期天 说道:
尝试randomize() and random();
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日15:36:21 星期天 说道:
这两个函数vc里面好像没有
────────────────────────────────────────
Anna (冷冷星光+|+忧伤) 于 2003年03月02日15:36:50 星期天 说道:
我以为是TC
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日15:38:38 星期天 说道:
sigh
都是c语言,为啥不能兼容呢
────────────────────────────────────────
leecxws (lovekiller) 于 2003年03月02日15:39:25 星期天 说道:
是不是你产生两个随机数的时间间隔太短了(我也遇到过),不妨试试
srand((unsigned)time(NULL)+100);
我当时就是加了一个数以后解决的。
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日15:40:52 星期天 说道:
是几个地方都加么?
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日15:41:01 星期天 说道:
就是用的这个:(
────────────────────────────────────────
Anna (冷冷星光+|+忧伤) 于 2003年03月02日15:41:39 星期天 说道:
如果连续产生的话最好加一个间隔值
────────────────────────────────────────
leecxws (lovekiller) 于 2003年03月02日15:42:10 星期天 说道:
对,特别是一个循环里面几个地方都用到的话最好加上。
────────────────────────────────────────
flythunder (似是故人来) 于 2003年03月02日15:44:21 星期天 说道:
因为生成的时候机器的没有延迟吧
有一个延迟的函数,是不是delay? 不敢确定
然后再生下一组吧
────────────────────────────────────────
sino (茶水) 于 2003年03月02日15:44:36 星期天 说道:
没有本质区别。 建议把srand放在循环外面,而且程序中只使用一次
────────────────────────────────────────
leecxws (lovekiller) 于 2003年03月02日15:46:36 星期天 说道:
加的这个数是一个随机数,比如是你上一次产生的随机数。
────────────────────────────────────────
sino (茶水) 于 2003年03月02日15:47:24 星期天 说道:
其实只要在程序开始时srand一次就行啦,后面不需要
────────────────────────────────────────
Anna (冷冷星光+|+忧伤) 于 2003年03月02日15:47:42 星期天 说道:
nod
────────────────────────────────────────
leecxws (lovekiller) 于 2003年03月02日15:49:16 星期天 说道:
我认可,一般情况下没有必要每次都srand(). :)
────────────────────────────────────────
sino (茶水) 于 2003年03月02日15:49:58 星期天 说道:
那就直接用随机数作种子,不用加时间
────────────────────────────────────────
sino (茶水) 于 2003年03月02日15:50:15 星期天 说道:
//hand
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日15:50:56 星期天 说道:
递归程序怎么办?
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日15:52:04 星期天 说道:
啥意思?
────────────────────────────────────────
sino (茶水) 于 2003年03月02日15:53:32 星期天 说道:
美关系,放在main() 最前面就好 :)
────────────────────────────────────────
sino (茶水) 于 2003年03月02日15:55:09 星期天 说道:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
randomize();
...
...
}
randomize() initializes the random number generator with a random value.
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日15:56:35 星期天 说道:
vc里面好像没有这个函数:(
────────────────────────────────────────
leecxws (lovekiller) 于 2003年03月02日15:56:39 星期天 说道:
呵呵,这倒是。除非一次循环就要产生非常非常巨多的随机数,因为这时可能
出现伪随机数的周期。但谁又能用得了那么多呢? 哈哈
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日15:57:51 星期天 说道:
555~~~
还是不行呀
────────────────────────────────────────
sino (茶水) 于 2003年03月02日16:04:08 星期天 说道:
我没有VC, 不过C++builder里有
────────────────────────────────────────
Anna (冷冷星光+|+忧伤) 于 2003年03月02日16:05:02 星期天 说道:
TC里也有,VC里还真没注意过。
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日16:05:11 星期天 说道:
borland的东东是一套呀
sigh,算了,换tc吧
────────────────────────────────────────
sino (茶水) 于 2003年03月02日16:06:07 星期天 说道:
//cft
void main()
{
srand((unsigned)time(NULL));
...
}
也好拉, 就是不用总srand
────────────────────────────────────────
Anna (冷冷星光+|+忧伤) 于 2003年03月02日16:08:30 星期天 说道:
程序初始化的时候用一次就可以了。
────────────────────────────────────────
sino (茶水) 于 2003年03月02日16:08:55 星期天 说道:
是啊
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日16:09:52 星期天 说道:
就是这么用地
dev-c++用过没有?
────────────────────────────────────────
sino (茶水) 于 2003年03月02日16:09:59 星期天 说道:
不属于 Posix, ANSI C, ANSI C++, 好像是从API来的吧
────────────────────────────────────────
sino (茶水) 于 2003年03月02日16:10:35 星期天 说道:
试过,不过那个gdb太让我ft了
────────────────────────────────────────
sino (茶水) 于 2003年03月02日16:11:57 星期天 说道:
哦,我试了试还行:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <math.h>
#include <ctype.h>
void main()
{
int i,r;
srand((unsigned)time(NULL));
for (i=0;i<10;i++) {
r=rand();
printf("%d\n",r);
}
}
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日16:19:24 星期天 说道:
但使用再递归函数里面就不好使了
────────────────────────────────────────
zhangyan (what are they doing?) 于 2003年03月02日16:43:34 星期天 说道:
初始化随即序列
────────────────────────────────────────
sino (茶水) 于 2003年03月02日16:52:00 星期天 说道:
放在main里面, main不是递归的亚
────────────────────────────────────────
ssos (存在与虚无·守拙) 于 2003年03月02日16:54:05 星期天 说道:
好使了
kiss all~~
────────────────────────────────────────
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.227毫秒