我正在尝试创建一个随机数生成器,它首先交换最小值和最大值,然后再次交换它们(返回到它们的原始状态?)。我的另外两个问题是:如何判断交换是否实际发生(因为它似乎是一个不可见的过程),以及无论选择哪两个值作为最小值和最大值,随机数输出始终为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.
}发布于 2017-02-24 13:15:53
你的代码中有太多的问题:
如果你在用maximum)
minimum的值,那么maximum
minimum = minimum)
rand() % maximum + minimum解析为(rand() % maximum) + minimum,这可能不是你想要的rand() % (x - y) to not a range [x, y).srand(time(NULL)) locally to randomNum()将重置生成器如果您在同一秒内多次调用该函数minimum中?https://stackoverflow.com/questions/42431189
复制相似问题