2015-08-28 42 views
1
#include <cstdlib> 
#include <iostream> 
using namespace std; 

int main() 
{ 
    int n,c; 

    cout<<"Enter number of items to be sorted: "; 
    cin>>n; 

    int data[n]; 

    cout<<"Unsorted Array: \n"; 
    for (int x=0;x<n;x++) 
    { 
     data[x]=rand(); 
     cout<<data[x]<<"\t"; 
    } 
    cout<<endl; 
} 

此代碼在此生成沒有特定順序的隨機數字。我怎樣才能讓這個代碼以升序或降序生成隨機數字。如何以升序或降序生成隨機數

我已經嘗試在這個論壇中搜索,但是我發現的只是生成沒有順序的隨機數字。

任何幫助將不勝感激。 預先感謝您。

+1

你先產生它們和排序之後。 –

回答

2

你不能:他們被稱爲隨機是有原因的。如果你需要一個隨機數組的排序,你應該先填充你的數組,然後對其進行排序。另外,如果你有C++ 11,我會建議使用std::array作爲固定大小的數組。

std::vector<int> data; 
for (int x=0;x<n;x++) 
{ 
    data.push_back(rand()); 
} 

std::sort(data.begin(), data.end()); 
+0

好的,謝謝先生。我問過這個問題,因爲我需要將隨機數字升序降序排列,並且認爲可以生成已經升序或降序的隨機數字。 謝謝你的澄清。 也感謝你的回答。 – Aaaaaaa

1

我不認爲,有一個內置的解決方案。根據你想要的統計屬性,你可以生成n個數字並在之後進行排序,或者你可以將ne隨機數添加到前一個數。

在C++ 11中,Btw rand或多或少被棄用。您應該使用隨機標題中的工具。

int main() { 
    //init generator with number from true random device 
    mt19937 gen(random_device{}()); 
    //define desired distribution equal to what you would get with rand() 
    uniform_int_distribution<> dist(0, RAND_MAX); 

    int n; 
    cout << "Enter number of items to be sorted: "; 
    cin >> n; 

    //generate numbers 
    vector<int> data; 
    for (int x = 0; x < n; x++) { 
     data.push_back(dist(gen)); 
    } 
    //sort numbers 
    sort(begin(data), end(data)); 

    //print numbers 
    for (auto& e : data) { 
     cout << e << "\t"; 
    } 
    cout << endl; 
} 
+0

謝謝你的澄清。 – Aaaaaaa

1

您可以使用:

sum=0; 
for(i=1;i<=n;++i) 
{ 
    sum+=random(100); 
    arr[i]=sum; 
}