2) 定义函数int randN1N2(int N1, int N2),该函数的功能是:生成并返回一个[N1, N2]之间均匀分布的随机整数,其中形参需满足N1 <= N2。
时间: 2024-01-21 11:16:53 浏览: 176
下面是实现该函数的示例代码:
```c++
#include <cstdlib>
int randN1N2(int N1, int N2) {
return rand() % (N2 - N1 + 1) + N1;
}
```
该函数首先利用C++中的rand函数生成一个[0, RAND_MAX]之间的随机整数,然后将其映射到[N1, N2]区间内。具体来说,将该随机数对区间长度(N2 - N1 + 1)取模,再加上N1,即可得到所需的随机整数。注意,这里使用%运算符求模,而不是除法运算,是因为%运算符可以保证余数始终为正数,从而保证生成的随机数在[N1, N2]之间。
相关问题
用C语言定义一个函数 randN1N2(int rN1, int rN2 )。该函数有两个整型的输入参数 rN1 和 rN2,其中,rN1 <= rN2。该函 数的功能是生成 rN1 到 rN2 之间均匀分布的随机整数,该函数的返回值类型是整型。每调用一次该函数,函数 返回一个 rN1 至 rN2 之间的随机整数。,定义一个函数 randLmt100( )。该函数没有输入参数,函数的返回类型是整型。该函数内部调用上述 randN1N2( ) 函 数。每调用一次函数 randLmt100( ),返回一个 0-99 之间的随机整数。
好的,以下是使用 C 语言实现的代码:
```c
#include <stdlib.h>
#include <time.h>
int randN1N2(int rN1, int rN2) {
// 使用系统时间初始化随机数种子
srand((unsigned int)time(NULL));
// 生成随机数并返回
return rand() % (rN2 - rN1 + 1) + rN1;
}
int randLmt100() {
// 调用 randN1N2 函数生成 0-99 之间的随机整数并返回
return randN1N2(0, 99);
}
```
这里使用了 C 语言标准库中的 rand 函数来生成随机数,并结合 time 函数作为随机数种子来保证每次生成的随机数不同。函数 randN1N2 生成 rN1 到 rN2 之间的随机整数,而函数 randLmt100 内部调用 randN1N2 函数来生成 0-99 之间的随机整数,并将其返回。
定义一个函数 randN1N2(int rN1, int rN2 )。该函数有两个整型的输入参数 rN1 和 rN2,其中,rN1 <= rN2。该函 数的功能是生成 rN1 到 rN2 之间均匀分布的随机整数,该函数的返回值类型是整型。每调用一次该函数,函数 返回一个 rN1 至 rN2 之间的随机整数。 4) 定义一个函数 randOper4( )。该函数没有输入参数,函数的返回类型是字符型。该函数内部调用上述 randN1N2( ) 函数。每调用一次函数 randOper4( ),随机返回 ’+’、 ’-’、 ’*’、 ’/’ 四个字符中的其中一个。 5) 定义一个函数 randLmt100( )。该函数没有输入参数,函数的返回类型是整型。该函数内部调用上述 randN1N2( ) 函 数。每调用一次函数 randLmt100( ),返回一个 0-99 之间的随机整数
下面是代码实现:
```cpp
#include <cstdlib>
#include <ctime>
using namespace std;
int randN1N2(int rN1, int rN2) {
srand(time(NULL)); // 用当前时间作为种子,避免每次生成的随机数都一样
return rand() % (rN2 - rN1 + 1) + rN1; // 生成 rN1 到 rN2 之间的随机整数
}
char randOper4() {
int randNum = randN1N2(1, 4); // 生成 1-4 之间的随机整数
switch (randNum) {
case 1:
return '+';
case 2:
return '-';
case 3:
return '*';
case 4:
return '/';
}
}
int randLmt100() {
return randN1N2(0, 99); // 生成 0-99 之间的随机整数
}
```
阅读全文