2017-02-24 14 views
0

我想创建一个随机数生成器,首先交换最小值和最大值,然后再次交换它们(回到它们的原始状态?)。我的另外两个问题是:如何判断交换是否实际发生(因为它看起来是一个不可见的过程),并且无论选择哪两个值作为随机数输出的最小值和最大值始终为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. 

} 

回答

0

还有就是在你的代码问题过多:

  • 交换就无法进行,如果你不与maximum覆盖它之前保存的minimum值:值丢失在第二次分配时,两者的值相同(即maximum
  • 值分配给本身没有任何意义,我不明白它的目的(如minimum = minimum
  • 运算符优先级,使​​解析为(rand() % maximum) + minimum而这可能不是你想要什么
  • ,如果你想生成一个间隔之间的随机数然后你必须使用间隔的界限,而不是它的总和,例如rand() % (x - y)获得范围[x, y)
  • 呼吁srand(time(NULL))就地就近randomNum()如果多次调用该函数在同一秒
  • 我不明白,交换价值再次交换他们的整个目的将复位发生器,你需要给他们,让排序那小一点总是保存在minimum还是什么?