| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 400 人关注过本帖
标题:关于产生随机数
只看楼主 加入收藏
xiaozr2
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2015-11-24
结帖率:100%
收藏
 问题点数:0 回复次数:5 
关于产生随机数
程序代码:
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
int main ( )
{
    int i;
    srand ((unsigned)time (NULL));
    for (i = 0;i < 10;i++)
    { 
       //srand ((unsigned)time (NULL));
       int a = rand ( );
       printf ("%d ", a);
    }
    printf ("\n");
    getchar ( );
    return 0;
}


srand ((unsigned)time (NULL));放在循环外能产生10个不同的随机数,放在循环内确是10个相同的随机数,这是为啥?
2015-11-29 23:25
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
time返回的是自1970年1月1日0时0分0秒到现在的秒数。

rand返回的应该叫伪随机数,当种子一样时产生的随机序列也是一样的。

srand放在循环里时,10次循环的时间是微秒级的,大部分时候在这10次循环里time的返回值是一样的。那么rand的第一个值自然是一样的。

重剑无锋,大巧不工
2015-11-29 23:33
xiaozr2
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2015-11-24
收藏
得分:0 
回复 2楼 beyondyf
那为什么在外面就会不一样呢?在循环外语句应该是只执行一次吧?
2015-11-29 23:35
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
不想解释。自己琢磨吧

重剑无锋,大巧不工
2015-11-29 23:38
xiaozr2
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2015-11-24
收藏
得分:0 
回复 4楼 beyondyf
小白一个 琢磨不透啊
2015-11-29 23:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 楼主 xiaozr2
知道咋用就可以了

甚至你自己也可以造一些随机数出来  不过未必有系统自带的函数造出来的随机效果好

DO IT YOURSELF !
2015-11-30 13:29
快速回复:关于产生随机数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.083949 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved