2013-12-10 48 views
0

我試圖做一個隨機數字發生器,一次顯示六個數字。C++顯示六個數字的隨機集合

第一五個數字範圍可以從1-50,最後的數字範圍可爲1-60

我現在已經設置了一些東西,一切都很順利,直到最後一個數字,我在進行測試運行時看到了4000個數字。我怎樣才能解決這個問題?

void Random::randGen() 
{ 
    for (int counter = 1; counter <=6; ++counter) 
    { 
     if (counter == 6) 
     { 
      cout << (1 + rand() % 60); 
     } 
     else 
     { 
      cout << setw(5) << (1 + rand() % 50); 
     } 
    } 
} 
+0

您沒有在最後一個數字前放一個空格。所以你看到最後兩個數字壓在一起。 – Barmar

+0

rand()並不像你想象的那樣隨機,如果你的編譯器已經支持它,使用std :: mt19937要好得多 –

+0

首先,如上所述,'rand'不是一個很好的函數。其次,即使是這樣,模運算'%'也會破壞一致的概率分佈。簡而言之,它使得數字更小的可能性大於更大的數字。 http://tinyurl.com/qbj8vps –

回答

3

將最後一個數字放在寬字段中,就像其餘的數字一樣,因此您可以在最後兩列之間得到空格。

 if (counter == 6) 
     { 
      cout << setw(5) << (1 + rand() % 60); 
     } 
+0

哈哈哈哦哇。我現在覺得自己像個白癡。非常感謝您提供簡單的解決方案。這很有趣。 – JACKET

1

不需要if。簡單地循環1..5並放置循環後的最後一個

void Random::randGen() 
{ 
    for (int counter = 1; counter <=5; ++counter) 
    { 
     cout << setw(5) << (1 + rand() % 50); 
    } 
    cout << setw(5) << (1 + rand() % 60); 
}