当前位置: 代码迷 >> C语言 >> [求助]请问C语言里随机数怎么产生?
  详细解决方案

[求助]请问C语言里随机数怎么产生?

热度:188   发布时间:2006-11-26 10:20:26.0
[求助]请问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语言  

----------------解决方案--------------------------------------------------------
以下是引用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的范围内.
不知道为什么.
请高手帮帮忙.谢谢~~


----------------解决方案--------------------------------------------------------

以下是引用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的范围内.
不知道为什么.
请高手帮帮忙.谢谢~~


----------------解决方案--------------------------------------------------------

以下是引用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的范围内.
不知道为什么.
请高手帮帮忙.谢谢~~


----------------解决方案--------------------------------------------------------

以下是引用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的范围内.
不知道为什么.
请高手帮帮忙.谢谢~~


----------------解决方案--------------------------------------------------------
C里面的随机数,没有种子的话每次都一样的一组数~~~~一般都把时间做种子用~~~
楼主的问题应该是switch没用{的原因~~~而且没break.....基础不扎实啊~
----------------解决方案--------------------------------------------------------

谢谢!!
加了()后就好了
汗~~~~
我们刚学C语言 还不怎么熟练呢
谢谢

----------------解决方案--------------------------------------------------------
请问随机种子srand()是什么意思?
谢谢!!
----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

谢谢哈 我再学学


----------------解决方案--------------------------------------------------------
  相关解决方案