C++ 传递参数、参数、交换函数和随机数生成器

C++ 传递参数、参数、交换函数和随机数生成器,c++,C++,我正在尝试创建一个随机数生成器,它首先交换最小值和最大值,然后再次交换它们(回到原始状态?)。我的另外两个问题是:我如何判断交换是否真的发生了(因为它似乎是一个不可见的过程),以及无论选择哪两个值作为最小值和最大值,随机数输出总是1 #include <string> #include <cstdlib> #include <iostream> using namespace std; int minimum; int maximum; //Swap fu

我正在尝试创建一个随机数生成器,它首先交换最小值和最大值,然后再次交换它们(回到原始状态?)。我的另外两个问题是:我如何判断交换是否真的发生了(因为它似乎是一个不可见的过程),以及无论选择哪两个值作为最小值和最大值,随机数输出总是1

#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()
    将重置生成器
  • 我不明白交换值以再次交换它们的全部目的,您是否需要对它们进行排序,以便将较小的值始终存储在
    最小值中
    还是什么