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毫秒