2017-02-24 28 views
0

乱数ジェネレータを作成して、最初に最小値と最大値を交換してから元の状態に戻します。私の他の2つの質問は、スワップが実際に起こっているかどうか(どのように見えないプロセスであるかのように見えるので)と、最小値と最大値としてどの2つの値を選択しても、乱数出力は常に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の値を保存しない場合

  • スワッピングは場所を取ることができません。値が失われ、 2番目の割り当てでは、どちらも同じ値を持ちます(maximum
  • どんな意味がありません自体に値を割り当てると、私はその目的を理解していない(例えばminimum = minimum
  • 演算子の優先順位が(rand() % maximum) + minimumとして解析​​を行い、生成したい場合には、あなたが
  • を望んおそらくではありません間隔の間の乱数は、その合計ではなく、区間の境界間の差を使用する必要があります。例えば、rand() % (x - y)の範囲を取得して[x, y)を取得します。
  • randomNum()にローカルsrand(time(NULL))を呼び出すと、あなたは、私は再びそれらを交換するための値を交換するの全体の目的を理解していない
  • 同じ秒に関数を複数回呼び出す場合、あなたはので、それらをソートする必要がない発電機をリセットします小さい方は常にminimumに格納されているか、または何ですか?
関連する問題