#include
#include
int main(){
int a=rand();
printf("%d\n",a);
return 0;
}
这段代码每次产生的数字是相同的,为啥不是随机的,查了一下,是说需要一个函数来产生一个种子,srand()函数到底是怎么产生随机数种子的,求讲解,谢谢。
c语言产生随机数的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
9条回答 默认 最新
sweezt 2015-04-13 02:33关注rand()的机制其实是计算机内部通过一个“种子”来进行一系列的复杂的计算最终生成一个N(具体多少位忘了,好像是13位吧)位长的数,这个数本质上不是随机的,因为他的“种子”是固定的。
所以,如果你想得到一个随机的数的话,那么你的“种子”必须是随机的,你要埋下一个随机“种子”,如何埋一个“种子”,你查查srand()的用法。
或许你会问,如何得到一个随机的“种子”呢?其实很简单,你可以把当前时间当成“种子”埋下去,因为当前时间是不停的在变,你把当前的时间当成“种子”埋下去,经过一系列的复杂计算,所得到的数,就是一个不可预测的N位随机数了,然后你可以通过取余算法来获得你想要的区间的随机数。本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用