随机数rand(); 随机数种子 srand();
执行程序代码时,可能需要大量数据来测试程序是否正确。 主观输入的话缺点很多,如果能让计算机自动生成数据供测试就好了。
如果在多次运行代码后发现问题,则每次运行后的结果都相同。 在同一位置的数字都是一样的。 不管什么时候运行,换电脑都一样。 那是因为rand ()函数是通过一系列计算得到的函数,结果是不变的。
为了解决这个问题,设置随机数种子。 srand (); 所需的参数是无符号整形。 rand ) )的默认随机数种子为1。 所以,如果每次运行得到的数据不一样,你只需要改变随机数种子就可以了。 但是,如果随机数种子相同,则每次执行时对应位置的数据都相同。
那么,考虑一下解决另一个问题的方法吧。 我们怎么让我们每次执行之后的数据都不一样呢? 另外,我们不需要每次手动更改数据。 怎么做srand (); 括号里的数字每次都在变呢。 时间到了。 时间总是在变化。 我们使用获取时间的函数作为参数。 srand () unsigned (time ) ) null ); 这个time ) )函数获取从1970年1月1日零时到现在的秒数,但是如果bzdpd运行程序时时间的秒数发生了变化,则每次得到的随机数也不一样。
# include stdio.h # include stdlib.h # include time.hint main ({ srand ) (unsigned ) time ) null ) }; 打印(% d (n ),rand ); 打印(% d (n ),rand ); 打印(% d (n ),rand ); 返回0; }当然,随机数也可以得到我们想要的范围的值,怎么办?
想得到0-9范围内的随机数rand (时
0-11范围内的随机数rand ();
1~10在最上面一个也就是rand () ) 1就可以了。