keke这一个的应用还是很重要的。
首先我们得明白,计算机是按照程序来执行的,“随机”这个概念,从根本上讲并不存在。
那么我们如何生成“随机数”?
#include<iostream> using namespace std; #include<cstdlib>//这个是rand的头文件 int main() { int i; for(i=0;i<10;i++)//生成10个随机数 cout << rand()<<endl; }
上面的示例程序执行结果(试了两次的)
结果,一模一样!!!(这要是彩票就好了,欸嘿嘿...
,当然这样子作为随机数绝对是不过关的,
接下来再引入srand函数,这个函数的重点就是来设置rand的种子的。种子不同的情况下,生成的随机数就不同
#include<iostream> using namespace std; #include<cstdlib> int main() { int i; srand(1);//seed设置为1。 for(i=0;i<10;i++) cout << rand()<<endl; }
//执行情况为和上面一样。可以试一试seed设置为2哦。
//作为测试,我们将srand放到循环体内部试一试 #include<iostream> using namespace std; #include<cstdlib> int main() { int i; for (i = 0; i < 10; i++) { srand(1); cout << rand() << endl; } } //可以得出,rand的结果,依赖于srand的种子
这里就有了一个新的问题,seed怎么来???
再加入一个好东西:time。//这里也可以人来输入seed(吼吼吼
#include<iostream> using namespace std; #include<cstdlib> #include<ctime>//头文件是介个样子的 int main() { int i; srand(time(NULL)); for (i = 0; i < 10; i++) { cout << rand() << endl; } }
敲黑板!!!
这里又是一个重点啦!!!
可以看到,上面的随机数在我们看来可能是莫名奇妙的一串数字(哼(¬︿̫̿¬☆)人家才不莫名其妙呢
事实上,没有其他条件下的随机数,其取值范围是0--->RAND_MAX
如果我们要在这个范围再取一个小范围的数,(给你个小小的提示:mod)
代码如下:👇👇👇
#include<iostream> using namespace std; #include<cstdlib> #include<ctime> int main() { int i; srand(time(NULL)); for (i = 0; i < 10; i++) { cout << rand()%100 << endl;//看这里看这里 } }