c语言中的rand随机数函数,是按指定顺序来产生的,在生成随机数之前,在stdlibh头文件中,会初始化函数srand,根据随机种子seed,来获取随机数,如果seed不变,每次运行得到的随机数会是一样的,因此,rand函数也被大家叫做伪随机数。下面就来介绍下rand函数的使用
打开代码编译器,输入如下所示的代码片段
运行该代码片段,得到10个随机数,但是我们发现,不论运行几次,生成的随机数都是这10个,也就是说,在种子seed不变的情况下,生成的随机数是伪随机数
我们引入头文件timeh,取时间戳作为seed的取值来源,改代码片段如下,将srand(1)改成srand(time(NULL))
运行代码,得到10个随机数如下,定义非常量的srand参数,可以避免伪随机数的产生
当我们需要产生一些随机数,如单位的抽奖,购买体育**前的选号等,我们可以利用Excel中的RAND函数来产生这些随机数。RAND函数能
够返回大于等于0小于1的均匀分布随机数,每次计算工作表时都将返回一个新的数值。我们只要将RAND()与INT函数组合起来,就能够产生各种位数的随
机数了。
“=INT(RAND()10)”
产生0到10之间的任意自然数
“=INT(RAND()100)”
产生0到100之间的任意自然数
……
由此,我们只需要在7(或其他大小)个单元格中分别输入“=INT(RAND()10)”,这样就能够产生一个7位的随机数。
它的返回值就是求取随机的值,所以如果没有对数有要求,直接这样定:
printf("%d", rand());就能输出一个随机数但如果对数有要求,如小数或在一定值以内:
小数:rand()+rand()/1000 //1000后面的0必须写,100是说明求两位小数,你可以自己加大
一定范围:rand()%10+0 //10是顶和底的差,0是底,就是说求10到20之间的数就是:rand()%10+10
但是调用它必须先调用srand()来生成随机种子,如果你没调用它,系统会自动调用但是srand是有个参数的,种子就是根据这个参数来定的,所以这个参数决定着生成的随机数如果你在代码里写死了它:srand(10);那这样rand生成的随机数就也被定格在了一定量,所以不要这样用要这样写:
srand(time(NULL));time的返回值是当前系统时间因为时间不同,所取的数值也就不同这样随机数就真正的随机了
time在中声明
rand,srand在中声明
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)