C语言怎样获取随机数(此教程十分详细)本文介绍用rand()和srand()实现 | 您所在的位置:网站首页 › 怎样取整数 › C语言怎样获取随机数(此教程十分详细)本文介绍用rand()和srand()实现 |
学C语言的小白可能不懂怎样获取随机数,网上可能不全面,我给大家讲一下用rand和srand获取随机数(某一范围的随机整数以及小数)。 这是我第一篇文章,希望多多鼓励…… 首先,使用这两个函数需要包含头文件,c++的可以用. 附上两函数原型: void rand(void); void srand(unsigned int seed);获取随机数函数rand用法为rand()%a,(a是一个整数,返回值为0到a的随机数,包含0,但不包含a)。假设a = 10,用一个变量b来接收, b = rand()%10; 那么b值就会大于等于0小于10. 哈哈!那么我们这就学会获得随机数了嘛?假设你获得的b等于4,当年你再一次运行程序的时候,会发现b的值依然是4.那这就不算随机数了吧? 这里给大家讲一下,rand()这个函数返回值除了被a的值控制外,还被一个隐藏的全局变量seed控制,每一个seed值只对应一个范围内的随机数,而你再次运行程序,并不会改变seed的值,所以b的值不会发生改变. 既然seed的值不会自己改变,那怎样人为改变呢?就要用到srand函数.可以第一次运行的时候,调用rand之前,用srand先设置一个种子,例如srand((unsigned)1);第二次运行时改为srand((unsigned)2)。大家肯定也发现了这样很麻烦,有什么办法能够自动改变srand()参数的值呢?可以是时间。 【注意:srand()获取种子只需要在程序开头获取一次即可,不需要多次调用】 一种获取时间的方法,也是比较常用的是用time()函数,需包含头文件或(这里不多做介绍)。因此可以使用**srand((unsigned)time(NULL))**来设置种子,因为每次打开程序的时间不同,所以seed的值会改变。 srand((unsigned)time(NULL)); rand()%10;我们已经解决了多次打开程序获得不同随机数的问题了,下面介绍怎样限定随机数的范围。 从rand入手ÿ |
CopyRight 2018-2019 实验室设备网 版权所有 |