| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 167 人关注过本帖
标题:关于随机数的问题
收藏  订阅  推荐  打印 
lqqnjust
Rank: 1
来自:江苏南通
等级:新手上路
帖子:37
积分:484
注册:2008-7-17
关于随机数的问题

我最近在做一个有关随机数的问题。可出现以下情况:我输入N时,100和5的头5个结果时一样的,帮忙分析一下,谢谢

#include<iostream.h>                              //包含输入输出
#include<stdlib.h>                                //包含随机数的生成
#include<fstream.h>                               //文件的读写




int getRandInt(int min,int max)
{   
int n;
        
        n=rand();
        n=n%(max-min+1)+min;
        return n;
}                                                     //产生随机数
             
void show()
{
int a,b;
    a=getRandInt(1,99);
    b=getRandInt(1,99);
    while(a+b>99){
    a=getRandInt(0,99);
    b=getRandInt(0,99);}
    cout<<a<<'+'<<b<<'='<<a+b<<endl;                  //输出合法数据
    
}
void main()
{
     
   
    cout<<"请输入题数:";
    cin>>N;
    while(N--)    show();
}
搜索更多相关主题的帖子: 随机数  
2008-9-15 15:23
沼泽
Rank: 12Rank: 12Rank: 12
等级:版主
威望:4
帖子:182
积分:2096
注册:2008-9-15

这主要是rand()函数的原因,如果直接用rand()函数产生的随机数其实是伪随机数,当你输入100和99时,你会发现前99种结果都是相同的。这是因为rand()函数它涉及到随机数种子的问题,当随机数种子相同时,用rand()函数产生的随机数虽然数与数之间是随机的,但是每次产生的随机数序列都是一样的。
所以每次只有设置不同的随机数种子才能真正保证随机数序列的随机。用srand()函数来设置随机数种子,只要象下面这样加一条语句就可以了。
void main()
{
     
   
    cout<<"请输入题数:";
    cin>>N;
    srand(N);
    while(N--)    show();
}
2008-9-15 21:45
lqqnjust
Rank: 1
来自:江苏南通
等级:新手上路
帖子:37
积分:484
注册:2008-7-17

谢谢了。这个问题已经解决了。我还想问下,例如在设置缺省时,如果不在调用函数的情况下可以设置缺省吗?
比如:
cout<<"输入值";
cin>>N;
这下面n可以用缺省吗

正在学习编程。希望各位不吝赐教,(*^__^*) 嘻嘻……
2008-9-16 12:40
沼泽
Rank: 12Rank: 12Rank: 12
等级:版主
威望:4
帖子:182
积分:2096
注册:2008-9-15

可以的,会由编译器默认
2008-9-16 12:51
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.051153 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved