标题:[求助]关于rand()函数的问题
只看楼主
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
 问题点数:0 回复次数:17 
[求助]关于rand()函数的问题
#include<stdlib.h>
#define MAX 10
main()
{
int jiajia();
int jianjian();
int chengcheng();
int a,b,c;
printf("ru gou ni xing lian xi jia qing shu ru a\nru guo ni xiang lian xi jian qing shu ru b\nru guo ni xing lian xi cheng qing shu ru c\n");
getch();
if(getch()=='a')
jiajia();
if(getch()=='b')
jianjian();
if(getch()=='c')
chengcheng();
getch();
}
int jiajia()
{
int jieguo,zanchun,i,j;
i=rand()/RAND_MAX;
j=rand()/RAND_MAX;
printf("%d+%d=",i,j);
scanf("%d",&zanchun);
jieguo=i+j;
if(zanchun==jieguo)
printf("Excellent!");
else
printf("NO,please try again.");
}
int jianjian()
{
int jieguo,zanchun,i,j;
i=rand()/RAND_MAX;
j=rand()/RAND_MAX;
printf("%d-%d=",i,j);
scanf("%d",&zanchun);
jieguo=i-j;
if(zanchun==jieguo)
printf("Excellent!");
else
printf("NO,please try again.");
}
int chengcheng()
{
int jieguo,zanchun,i,j;
i=rand()/RAND_MAX;
j=rand()/RAND_MAX;
printf("%d*%d=",i,j);
scanf("%d",&zanchun);
jieguo=i*j;
if(zanchun==jieguo)
printf("Excellent!");
else
printf("NO,please try again.");
}

这是个在本论坛上看到的帖子上的一个题目,因为我的c不好.其中的很多功能都不能实现,但是这个和序我觉得能基本上满足他的要求,可是在运行的时候总是0+0=
我想是因为rand()函数使用不正确的原因吧!]
请各位教教我!!!
谢谢了!!
因为我只有一本c语言课本,这个课本上的函数库里面没有这个函数,请各位在解决这个问题的时候给我顺便讲讲这个rand()怎么用!!!
谢谢了!!!
搜索更多相关主题的帖子: rand 函数 
2006-04-05 17:25
ヤ順祺冄繎ヤ
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:3032
专家分:0
注 册:2005-11-9
得分:0 
rand()是産生一個隨機值,
建議你去下載論壇頂的一個函數查詢工具。
2006-04-05 17:29
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
得分:0 
请问一下怎么能够定义RAND-MAX的最大值啊
而且上面的程序无论怎么样都只是i和j的值是0!
谢谢了!

2006-04-05 17:33
ヤ順祺冄繎ヤ
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:3032
专家分:0
注 册:2005-11-9
得分:0 

我也不知道怎麽來確定rand()函數最大值,
我只知道rand()产生一个随机数(0到 0x7fff 之间)
上面的程序我看應該就是RAND_MAX的錯吧!
我這兒沒裝C,你運行沒報錯嗎?
好像RAND_MAX沒值呀?
你試著把RAND_MAX改成MAX。
2006-04-05 17:48
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
得分:0 

运行的时候
i和j的值都是0
不能随机的取数!


2006-04-05 18:07
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
得分:0 
我又运行了一下
果然是RAND_MAX的错啊!
把上面程序中的/RAND_MAX去掉就可以得到随机取的数了!
谢谢了

2006-04-05 18:12
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
得分:0 

继续求助啊!]

谁可以告诉我怎样能规定rand()的最大数!!!


2006-04-05 18:18
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
得分:0 
不会吧?
有没有可以告诉 我这个函数的用法啊
快啊
最好是给举个例子
谢了!!

2006-04-05 21:14
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
得分:0 

rand() 函数 随即返回一个0-1之间的 float数. 不过是按到一个序列..因为序列的循环比较大.所以.某种意义上称为随即..如果想真正的返回随即 float数..

在 rand()前面加 randomize()函数..次函数是给rand()函数随即生成种子数..

函数参数为空时..是按系统时间给rand()函数做种子..

不过..我曾经看过一本书..如果 rand(-1) 的话.也是按系统时间当种子..可是 我试不过..没通过编译


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-05 21:26
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
得分:0 
我们知道rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种了,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a) 功能是
初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过srand()函数,我们是可以产生可以预见的随机序列,
那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列,是吧。利用srand((unsign)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的,对了,你知道time() 函数的功能是返回从1970/01/01到现在的秒数的吧,可能这个起始时间不正确,你查一下对不对吧,C还提供了另一个更方便的函数,randomize()
原形是void randomize(),功能是用来始初rand() 的种子的初始值,而且该值是不确定的,它相当于srand((unsign)(time(NULL)) 不过应注意的是randomize()的功能要通过time来实现所以在调用它时头文件要包含time.h罢了

查到的...

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-04-05 21:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-55312-1-1.html




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

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