| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:随机函数的问题(郁闷的……)
只看楼主 加入收藏
多布斯的喵喵
Rank: 2
等 级:论坛游民
帖 子:133
专家分:24
注 册:2011-3-29
结帖率:94.74%
收藏
已结贴  问题点数:20 回复次数:17 
随机函数的问题(郁闷的……)
#include<stdio.h>
#include<stdlib.h>
int main()
{
   
 int a,c,k,i;
 char x;
    for(i=0;i<100;i++)
 {
  a=rand()%100;
  c=rand()%100;
 printf("%d+%d\n",a,c);  
 scanf("%d",&k);
 if(k==a+c)
    {
  printf("right\n");
  printf("是否继续?\ny/n\n");
 }
 else
 {
  printf("error\n");
        printf("是否继续?\ny/n\n");
 }
  scanf("%c",&x);//关键这个,试试你就懂:这个输入怎么起不了效果,直接进入第二次循环……     (能解释原因吗?)
        if(x=='y')
   continue;
  if(x=='n')
   break;
 
 }
  return 0;
}
还有:为什么随机出来的数字第一次老是一样的,以后相同次数的循环出的数字也都一样……

[ 本帖最后由 多布斯的喵喵 于 2011-7-1 15:47 编辑 ]
搜索更多相关主题的帖子: continue include 
2011-07-01 12:15
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:5 
头文件加上 #include <time.h>,然后在main()里加入srand((unsigned)time(NULL));

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-07-01 12:24
kelas
Rank: 6Rank: 6
等 级:侠之大者
帖 子:176
专家分:434
注 册:2010-5-28
收藏
得分:0 
srand(time(NULL));          
iItem = rand() % iTotal;
可以认为rand()在每次被调用的时候,它会查看:
1) 如果用户在此之前调用过srand(seed),给seed指定了一个值,那么它会自动调用
srand(seed)一次来初始化它的起始值。
2) 如果用户在此之前没有调用过srand(seed),它会自动调用srand(1)一次。
根据上面的第一点我们可以得出:
1) 如果希望rand()在每次程序运行时产生的值都不一样,必须给srand(seed)中的seed一个变值,这个变值必须在每次程序运行时都不一样(比如到目前为止流逝的时间)。
2) 否则,如果给seed指定的是一个定值,那么每次程序运行时rand()产生的值都会一样,虽然这个值会是[seed, RAND_MAX(0x7fff))之间的一个随机取得的值。
3) 如果在调用rand()之前没有调用过srand(seed),效果将和调用了srand(1)再调用rand()一样(1也是一个定值)。

收到的鲜花
2011-07-01 12:40
多布斯的喵喵
Rank: 2
等 级:论坛游民
帖 子:133
专家分:24
注 册:2011-3-29
收藏
得分:0 
回复 2楼 ansic
我用的是VC6.0,它没有时间函数,怎么办……
2011-07-01 12:46
kelas
Rank: 6Rank: 6
等 级:侠之大者
帖 子:176
专家分:434
注 册:2010-5-28
收藏
得分:0 
以下是引用多布斯的喵喵在2011-7-1 12:46:41的发言:

我用的是VC6.0,它没有时间函数,怎么办……
肯定有
2011-07-01 12:54
多布斯的喵喵
Rank: 2
等 级:论坛游民
帖 子:133
专家分:24
注 册:2011-3-29
收藏
得分:0 
回复 5楼 kelas
但是……它就报了这个错
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
   
    int a,c,k,i;
    char x;
    for(i=0;i<100;i++)
    {
        a=rand()%100;
        c=rand()%100;
        printf("%d+%d\n",a,c);
        srand((unsigned)time(NULL));
        scanf("%d",&k);
        if(k==a+c)
        {
            printf("right\n");
            printf("是否继续?\ny/n\n");
        }
        else
        {
            printf("error\n");
            printf("是否继续?\ny/n\n");
        }
        scanf("%c",&x);//关键这个,试试你就懂:这个输入怎么起不了效果,直接进入第二次循环……
        if(x=='y')
            continue;
        if(x=='n')
            break;
        
    }
    return 0;
}
c:\program files\visual c++\bin\111.c(2) : fatal error C1083: Cannot open include file: 'time.h': No such file or directory
2011-07-01 13:02
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:0 
你这样输入你就知道了   
正确答案+空格+n



不管怎么走、总有一个终点...
2011-07-01 14:57
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
这你也不会 不是吧
2011-07-01 15:02
多布斯的喵喵
Rank: 2
等 级:论坛游民
帖 子:133
专家分:24
注 册:2011-3-29
收藏
得分:0 
我装的是只有5M大的简化版………………
马上装完全版…………
2011-07-01 15:17
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:15 
嘿嘿  又学了一招     fflush()   flushall()     while ((chars=getchar()) != '\n' && chars != EOF);



#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main()
{

int a,c,k,i;
char x;
int chars;



srand( time(0) );
    for(i=0;i<100;i++)
{
  a=rand()%100;
  c=rand()%100;
printf("%d+%d\n",a,c);
scanf("%d",&k);
if(k==a+c)
    {
  printf("right\n");
  printf("是否继续\tY/N\n");
}
else
{
  printf("error\n");
        printf("是否继续?\tY/N\n");
}
printf("_________________________________________________\n");
 while ((chars=getchar()) != '\n' && chars != EOF);
  x=getchar();//关键这个,试试你就懂:这个输入怎么起不了效果,直接进入第二次循环……
        if(x=='y')
   continue;
  if(x=='n')
   break;

}
  return 0;
}
收到的鲜花
  • 多布斯的喵喵2011-07-01 15:45 送鲜花  5朵   附言:我很赞同
  • 五戒2011-07-01 20:24 送鲜花  3朵   附言:好文章 看完这个帖子收获很大

不管怎么走、总有一个终点...
2011-07-01 15:21
快速回复:随机函数的问题(郁闷的……)
数据加载中...
 
   



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

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