| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1689 人关注过本帖
标题:[求助]请问C语言里随机数怎么产生?
只看楼主 加入收藏
lanzang
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-7-28
收藏
 问题点数:0 回复次数:10 
[求助]请问C语言里随机数怎么产生?
我知道用
int a;
a=rand()%(3)+0;
是产生从0~2的随机数 ,但实际应用的时候结果不对啊.
比如:
main()
{int a;
a=rand()%(3)+0;
switch(a)
case 0: printf("win");
case 1: printf("equal");
case 2: printf("lose");
printf("\n");
}
执行时 提示说 1和2 不在switch的范围内.
不知道为什么.
请高手帮帮忙.谢谢~~
搜索更多相关主题的帖子: 随机数 C语言 
2006-11-26 10:20
hzlqzh2006
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-11-22
收藏
得分:0 
以下是引用lanzang在2006-11-26 10:20:26的发言:
我知道用
int a;
a=rand()%(3)+0;
是产生从0~2的随机数 ,但实际应用的时候结果不对啊.
比如:
main()
{int a;
a=rand()%(3)+0;
switch(a) /* 少了{ } */
case 0: printf("win");
case 1: printf("equal");
case 2: printf("lose");
printf("\n");
}
执行时 提示说 1和2 不在switch的范围内.
不知道为什么.
请高手帮帮忙.谢谢~~


2006-11-26 10:46
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
以下是引用lanzang在2006-11-26 10:20:26的发言:
我知道用
int a;
a=rand()%(3)+0; \\是这边多了()这个!3不要括号的!
是产生从0~2的随机数 ,但实际应用的时候结果不对啊.
比如:
main()
{int a;
a=rand()%(3)+0; \\这边干吗要+0呀?
switch(a)
case 0: printf("win");
case 1: printf("equal");
case 2: printf("lose");
printf("\n");
}
执行时 提示说 1和2 不在switch的范围内.
不知道为什么.
请高手帮帮忙.谢谢~~


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-11-26 12:21
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用lanzang在2006-11-26 10:20:26的发言:
我知道用
int a;
a=rand()%(3)+0;
是产生从0~2的随机数 ,但实际应用的时候结果不对啊.
比如:
#include<time.h>
#include<stdlib.h>
main()
{int a;
srand(time(NULL));
a=rand()%3;
switch(a)
{case 0: printf("win");
case 1: printf("equal");
case 2: printf("lose");
}printf("\n");
}
执行时 提示说 1和2 不在switch的范围内.
不知道为什么.
请高手帮帮忙.谢谢~~


倚天照海花无数,流水高山心自知。
2006-11-26 12:58
hermit
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-12
收藏
得分:0 
以下是引用lanzang在2006-11-26 10:20:26的发言:
我知道用
int a; 没有随机种子 加上srand( (unsigned)time( NULL ) );
a=rand()%(3)+0;
是产生从0~2的随机数 ,但实际应用的时候结果不对啊.
比如:
main()
{int a;
a=rand()%(3)+0;
switch(a) 少了{
case 0: printf("win"); 少了break;
case 1: printf("equal");
case 2: printf("lose");
printf("\n");
}
执行时 提示说 1和2 不在switch的范围内.
不知道为什么.
请高手帮帮忙.谢谢~~

2006-11-26 14:26
剑风曲
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-11-16
收藏
得分:0 
C里面的随机数,没有种子的话每次都一样的一组数~~~~一般都把时间做种子用~~~
楼主的问题应该是switch没用{的原因~~~而且没break.....基础不扎实啊~
2006-11-26 17:04
lanzang
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-7-28
收藏
得分:0 

谢谢!!
加了()后就好了
汗~~~~
我们刚学C语言 还不怎么熟练呢
谢谢
2006-11-26 23:13
lanzang
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-7-28
收藏
得分:0 
请问随机种子srand()是什么意思?
谢谢!!
2006-11-26 23:16
剑风曲
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-11-16
收藏
得分:0 

C的随机函数rand其实应该叫做伪随机数,它的生成方法其实是把随机种子通过一个函数运算得出来的~~~(前一次的随机值默认为下一次的随机种子)
这样就会产生随机数了.如果没有写初始的随机种子,那么它会有一个默认值,所以,没有初始随机种子的随机数永远的一个样的.
如果你需要更加专业的随机数,应该去下载一些专业的随机数生成器.很多编程语言里的随机数都是指伪随机数.

2006-11-27 15:34
lanzang
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-7-28
收藏
得分:0 

谢谢哈 我再学学

2006-11-27 23:07
快速回复:[求助]请问C语言里随机数怎么产生?
数据加载中...
 
   



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

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