C++ 基础知识(3)--三目运算符、随机数、水仙花例子
三目运算符
三目运算符的格式是:<表达式1> ? <表达式2> : <表达式3>
当表达式1为true时执行表达式2,当表达式1为false时执行表达式3。
例子:
1 | int num = 5; |
运行结果:
1 | 4 |
c++ 中的三目运算符可以变量赋值。
例子:
1 | int a = 0; |
运行结果:
1 | 1 |
随机数
c++ 的随机数生成方式是rand()和srand()。
rand并不是真随机数,而是伪随机数。
rand()
使用rand()会获取到一个随机数,使用rand()是需要加上头文件#include <stdlib.h>的。取值范围是0~2147483647。
例子:
1 |
|
打印结果:
1 | 16807 |
注意: 只有第一次运行的时候才会随机,比如这次案例执行的结果是16807,你之后的在怎么运行都还是16807。原因是没有随机种子,所有需要用到srand()。
srand()
初始化随机数发生器。srand需要生成一个整数,而且保证每次这个整数都不一样才行,否则每次生成的随机数会是一样的。
1 | unsigned int seed; |
也就是要保证seed每次都是不一样的才能才产生随机数。可以使用当前时钟作为随机数种子,这里要用到time(),需要用到头文件time.h。
完整例子如下:
1 |
|
这样运行就会出现不同的随机数。
选择随机数产生的范围
要取得 [a,b) 的随机整数,使用 (rand() % (b-a))+ a;
要取得 [a,b] 的随机整数,使用 (rand() % (b-a+1))+ a;
要取得 (a,b] 的随机整数,使用 (rand() % (b-a))+ a + 1;
通用公式: a + rand() % n;其中的 a 是起始值,n 是整数的范围。
要取得 a 到 b 之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得 0~1 之间的浮点数,可以使用 rand() / double(RAND_MAX)。
例子:
- 获取[0,10)的范围
rand() % 10
水仙花例子
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
找到所有三位数的水仙花数。
1 |
|
这个例子中用到了pow()方法,就是求数的次幂(n^m),第一次参数就是n,第二个参数就是m,m是几代表几次幂。需要头文件cmath
例子:
1 | pow(5,2); // 5 * 5 = 25 |
-
2022-09-08