rand()可以生成0~RAND_MAX之间的一个随机数
其中RAND_MAX 是stdlib.h 中定义的一个整数
不同的系统中RAND_MAX值也不尽相同
x%9是对x取模,意思取整数x除以整数9的余数
无论取得什么样的随机数,除以9取余数必然是在
[0,8]区间的某个整数也就是0,1,2,3,4,5,6,7,8这九个数中的某一个
而后面的+1则相当于在取完余数后又加了1
所以rand() %9 +1的取值范围为[1,9]
也就是1,2,3,4,5,6,7,8,9这九个数字中的一个
-----------------------------------------------------------------
你在9个数字当中怎么可能随机出10个不一样的数字?
-----------------------------------------------------------------
rand()名义上是产生随机数,实际上产生的只是一个伪随机数
实际上内部还是有一定的规律可循的
如果去掉srand()就会发现每隔几次产生的几个随机数都一样
srand()相当于是种下了一个种子,这颗种子生根发芽长成一棵果树
如果是同一个种子那么只会长出一个果树,果子的序列当然也是同一个
而后面的time(NULL)则表示从 Unix 纪元 格林威治时间 1970 年 1 月 1 日
00:00:00到当前时间的秒数,将此值作为种子就可以保证种子不会是同一个
那么就可以极大程度的避免果子序列的重复,但是这种方法只能治标不能治本
不过对于人类而言,这样产生的随机数已经足够使用了
----------------------------------------------------------------------------------
要保证rand()每次取的随机数都不一样那么就需要知道之前几次取了哪些随机数
如果已经取过则放弃本轮rand()重新获取,直到与之前取的都不同
具体可以用数组和循环实现