C++ 传递参数、参数、交换函数和随机数生成器
我正在尝试创建一个随机数生成器,它首先交换最小值和最大值,然后再次交换它们(回到原始状态?)。我的另外两个问题是:我如何判断交换是否真的发生了(因为它似乎是一个不可见的过程),以及无论选择哪两个值作为最小值和最大值,随机数输出总是1C++ 传递参数、参数、交换函数和随机数生成器,c++,C++,我正在尝试创建一个随机数生成器,它首先交换最小值和最大值,然后再次交换它们(回到原始状态?)。我的另外两个问题是:我如何判断交换是否真的发生了(因为它似乎是一个不可见的过程),以及无论选择哪两个值作为最小值和最大值,随机数输出总是1 #include <string> #include <cstdlib> #include <iostream> using namespace std; int minimum; int maximum; //Swap fu
#include <string>
#include <cstdlib>
#include <iostream>
using namespace std;
int minimum;
int maximum;
//Swap function
void swap (int& minimum, int& maximum) {
minimum = maximum;
maximum = minimum;
}
int randomNumber;
//Random number generator
void randomNum() {
minimum = minimum;
maximum = maximum;
srand(time(NULL));
randomNumber = rand() % maximum + minimum;
cout<<"Your random value is: " << randomNum;
}
int main() {
cout<<"Please enter your minimum value: " << endl;
cin>>minimum;
cout<<"Please enter your maximum value: " << endl;
cin>>maximum;
swap (minimum, maximum); //Calling swap function
randomNum(); //Needs to swap again somehow.
}
#包括
#包括
#包括
使用名称空间std;
最小整数;
int最大值;
//交换功能
无效交换(整数和最小值、整数和最大值){
最小值=最大值;
最大值=最小值;
}
整数随机数;
//随机数发生器
void randomNum(){
最小值=最小值;
最大值=最大值;
srand(时间(空));
randomNumber=rand()%最大值+最小值;
cout您的代码中存在大量问题:
- 如果在用
最大值
覆盖之前未保存最小值
的值,则无法进行交换:该值将丢失,并且在第二次赋值时,两者仅具有相同的值(即最大值
)
- 给自己赋值没有任何意义,我也不理解它的用途(例如
minimum=minimum
)
- 运算符优先级使
rand()%maximum+minimum
解析为(rand()%maximum)+minimum
,这可能不是您想要的
- 如果要在区间之间生成随机数,则必须使用区间边界之间的差值,而不是其总和,例如
rand()%(x-y)
,以获得范围[x,y)
- 如果您在同一秒内多次调用函数,则在本地将
srand(time(NULL))
调用到randomNum()
将重置生成器
- 我不明白交换值以再次交换它们的全部目的,您是否需要对它们进行排序,以便将较小的值始终存储在
最小值中
还是什么