这次来看到Number Random啦,也就是随机乱数。
随机乱数很常出现在面试的考题~ 所以我写了两种简单的乱数程式。
学习目标: Number Random的实务
学习难度: ☆☆☆
首先是单一乱数~ 很简单,只有srand跟rand要注意一下~
#include <iostream>#include <ctime>using namespace std;int main(){int num;cin>>num;srand(time(NULL)); //time(NULL)会输出从1970年1月1号 0点0分0秒开始到现在的秒数cout<<rand()%num+0<<endl; //乱数从0开始直到num return 0;}
接下来是多个数的乱数。
使用者可以输入要乱数的数量(input),程式会输出1到input範围的数。
例如~输入5,可能会输出: 1, 3, 2, 4, 5。
比较特别的是它不会输出相同的数字。
老样子用阵列去存乱数,然后再逐一检查。
#include <iostream>#include <ctime>#include <stdlib.h> using namespace std;void random(int input){srand(time(NULL));int i,j;int num[input];for(i=0;i<input;i++) //走访乱数的数量 0~input {do{num[i]=rand()%(input)+1; /*这里会进行乱数(1~input)*/for(j=0;j<i;j++){if(num[i]==num[j]) /*如果有重複的乱数就跳出*/ break;}}while(j!=i); //当j!=i时,意味有数字重複,因为重複时,刚刚的迴圈会break,不让j继续增值,所以要在做乱数 cout<<num[i]<<endl;}}int main(){int input;cin>>input; //输入要乱数的数量random(input); //开始执行乱数return 0;}
参考资料:
https://www.cplusplus.com/reference/cstdlib/rand/