| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1787 人关注过本帖
标题:请问一下,这个程序为什么每次输出的随机数都是41+67 呢?
只看楼主 加入收藏
惧惧
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2016-6-19
结帖率:90.91%
收藏
已结贴  问题点数:10 回复次数:7 
请问一下,这个程序为什么每次输出的随机数都是41+67 呢?
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int a,b,c;
    time_t start,end;
    start=time(0);
    a=rand() % 100;
    b=rand() % 100;
    printf("%d + %d = ",a,b);
    scanf("%d",&c);
    if(c==a+b)
    {
        printf("\nyou did right"); 
    }
    else
    {
        printf("\nyou did wrong");
    }
    
    end=time(0);
    printf("\ntime: %.2f seconds.",difftime(end,start));
    
    return 0;
}
2016-06-20 15:38
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:4 
rand是伪随机,所以还是要像我给你的例子一样,加个随机数种子,这样每次都会不一样了。
2016-06-20 15:43
惧惧
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2016-6-19
收藏
得分:0 
回复 2楼 grmmylbs
伪随机是什么意思  就是说它只会产生一个随机数?
2016-06-20 15:45
惧惧
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2016-6-19
收藏
得分:0 
回复 2楼 grmmylbs
而且 必须要按照  srand(time(&starttime));  这样的方式 把计时的加进去吗?能不能只写 srand(); 与时间分开写 ?
2016-06-20 15:49
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:4 
加一句srand(time(0)),提供随机种子。
2016-06-20 15:55
惧惧
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2016-6-19
收藏
得分:0 
回复 5楼 linlulu001
懂啦~谢谢~
2016-06-20 15:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
无论设不设随机种子,它都是“伪随机”的
根据标准,给定确定的种子,将产生确定的数列
数字计算机就产生不了真随机数,真随机数必须通过外界熵获得,比如CPU温度、宇宙背景辐射等等。

C++标准库中有非确定性随机数生成器 std::random_device
但C标准库中没有,这很遗憾,只能自己写了,但是,根据你的题目要求,根本就用不到真随机数
2016-06-20 16:07
惧惧
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2016-6-19
收藏
得分:0 
回复 7楼 rjsp
明白啦~
2016-06-20 16:25
快速回复:请问一下,这个程序为什么每次输出的随机数都是41+67 呢?
数据加载中...
 
   



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

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