关于 c++ 随机数的补充(取一定范围的随机数):
可以在宏定义中顶一个random(int number)函数:
#include <iostream> #include<stdio.h> #include<time.h> #define random(x)(rand()%x) using namespace std; int main() { srand((int)time(0));//部署随机种子 for (int i = 0; i < 10; i++){ cout << random(100) << endl; //输出0-100的随机数 }; return 0; }
srand函数是随机数发生器的初始化函数。
原型: void srand(unsigned seed);
用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如: srand(1); 直接使用 1 来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time 函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将 time_t 型数据转化为(unsigned)型再传给 srand 函数,即: srand((unsigned) time(&t)); 还有一个经常用法,不需要定义time_t型t变量,即: srand((unsigned) time(NULL)); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。
例子:
#include <stdlib.h> #include <stdio.h> #include <time.h> /*用到了time函数,所以要有这个头文件*/ #define MAX 10 int main( void) { int number[MAX] = {0}; int i; srand((unsigned) time(NULL)); /*播种子*/ for(i = 0; i < MAX; i++) { number[i] = rand() % 100; /*产生100以内的随机整数*/ printf("%d ", number[i]); } printf("\n"); return 0; }
编程语言中,函数直接或间接调用函数本身,则该函数称为递归函数。
#include <iostream> using namespace std; // 本程序用递归算法求n的阶乘 int counter=1; int fac(int n) { cout<<"第"<<counter<<"次调用:"<<n<<" * "<<"fac("<<n-1<<")"<<endl; if (n==1) { return 1; } else { counter++; return n * fac(n-1); // 断点1 } } int main() { int n; cout<<"请输入求n的阶乘的n值:"; cin>>n; cout<<"结果:fac("<<n<<")="<<fac(n)<<endl; }
lambda表达式无法修改通过复制形式捕捉的变量,因为函数调用运算符的重载方法是const属性的。有时候,你想改动传值方式捕获的值,那么就要使用mutable,例子如下:
int main() { int x = 10; auto add_x = [x](int a) mutable { x *= 2; return a + x; }; // 复制捕捉x cout << add_x(10) << endl; // 输出 30 return 0; }
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1889C++ 数字
关于 c++ 随机数的补充(取一定范围的随机数):
可以在宏定义中顶一个random(int number)函数:
1888C++ 数字
srand函数是随机数发生器的初始化函数。
原型: void srand(unsigned seed);
用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如: srand(1); 直接使用 1 来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time 函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将 time_t 型数据转化为(unsigned)型再传给 srand 函数,即: srand((unsigned) time(&t)); 还有一个经常用法,不需要定义time_t型t变量,即: srand((unsigned) time(NULL)); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。
例子:
1887C++ 函数
编程语言中,函数直接或间接调用函数本身,则该函数称为递归函数。
1886C++ 函数
lambda表达式无法修改通过复制形式捕捉的变量,因为函数调用运算符的重载方法是const属性的。有时候,你想改动传值方式捕获的值,那么就要使用mutable,例子如下:
1885C++ 函数