2017-02-24 45 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還是什麼?