浪前青山 2015-04-13 01:55 采纳率: 100%
浏览 4153
已采纳

c语言产生随机数的问题

#include
#include
int main(){
int a=rand();
printf("%d\n",a);
return 0;
}
这段代码每次产生的数字是相同的,为啥不是随机的,查了一下,是说需要一个函数来产生一个种子,srand()函数到底是怎么产生随机数种子的,求讲解,谢谢。

  • 写回答

9条回答 默认 最新

  • sweezt 2015-04-13 02:33
    关注

    rand()的机制其实是计算机内部通过一个“种子”来进行一系列的复杂的计算最终生成一个N(具体多少位忘了,好像是13位吧)位长的数,这个数本质上不是随机的,因为他的“种子”是固定的。
    所以,如果你想得到一个随机的数的话,那么你的“种子”必须是随机的,你要埋下一个随机“种子”,如何埋一个“种子”,你查查srand()的用法。
    或许你会问,如何得到一个随机的“种子”呢?其实很简单,你可以把当前时间当成“种子”埋下去,因为当前时间是不停的在变,你把当前的时间当成“种子”埋下去,经过一系列的复杂计算,所得到的数,就是一个不可预测的N位随机数了,然后你可以通过取余算法来获得你想要的区间的随机数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算