2014-02-19 197 views
-11

如何使用rand()生成25位數的隨機數並將其存儲爲字符串?C++生成25位數的隨機數?

using namespace std; 
int main(int argc, char **argv) 
{ 
    srand(time(0)); 

    char arr[26] = {0}; 

    for(int i = 0; i < 26; i++){ 

     arr[i] = rand() % 10+ '0'; 
    } 

    for(int i = 0; i < 25; i++){ 
    cout << arr[i] << " "; 
    } 

    return 0; 
} 

這段代碼每次程序運行時都會產生25個隨機數。

同樣,我需要生成一個25位數字並將其存儲在一個數組中。

+1

顯示我們到目前爲止你已經嘗試過什麼,是什麼問題。 – Angew

+0

我知道如何生成4-5位數字。但不是25個數字... – AMZZ

+0

你知道['std :: srand'](http://en.cppreference.com/w/cpp/numeric/random/srand)和['std :: rand '](http://en.cppreference.com/w/cpp/numeric/random/rand)? –

回答

2

聲明一個包含二十六個字符的數組。在從零到二十四(含)的循環中,生成一個介於'0''9'之間的隨機值,並將其添加到數組中。用字符串終止符終止數組。現在你有一個字符串與25個隨機十進制數字。


對於實際的隨機數生成,我建議你看看到新的C++ 11 random number functionality,尤其是std::uniform_int_distribution

std::generate功能與standard algorithm library結合使用,您只需幾行即可完成。

+0

你可以使用rand()顯示第一個方法的代碼嗎? – AMZZ

+0

@AMZZ這基本上是你在你的問題,但你有26位數字而不是25,因此覆蓋結束零,並沒有一個字符串。 –

+0

好..但程序生成** 25個隨機數字**不** ** 25位數字隨機數字** – AMZZ

0

這是我使用的邏輯,

int getRandom() 
{ 
    const int size = 10; 
    static int iBuff[10] = {0,1,2,3,4,5,6,7,8,9}; 
    static int iPivot = 0; 

    if (iPivot >= size) 
    { 
     for(iPivot = 0; iPivot<size; iPivot++) 
      iBuff[iPivot] = iPivot; 

     iPivot = 0; 
    } 

    int iPos = rand()%(size-iPivot); 

    int rand = iBuff[iPos+iPivot]; 

    // 
    // swap values at iPos and iPivot 
    // 
    int temp = iBuff[iPivot]; 
    iBuff[iPivot] = iBuff[iPos+iPivot]; 
    iBuff[iPos+iPivot] = temp; 

    iPivot++; 
    return rand; 
} 


int main() 
{ 
    srand(time(NULL)); 
for (int iLoop=0; iLoop<25; iLoop++) 
    cout<<getRandom()<<endl; 

getchar(); 
return 0; 
} 
+1

我不認爲這會給你一個很好的分配,但它可能是夠好的。另外,一個'const'會殺死你? ;) –

+0

也許你可以解釋一下邏輯?我很努力地看到這是如何產生一個25位數的數字;它看起來更像是它會產生一組8個數字的隨機排列,如果您將其稱爲8次以上,則會出現未定義的行爲。 –

+0

嗯,我出了一段時間,@mike我的壞,我沒有正確地讀這個問題,我解釋爲,你想產生0-25之間的隨機數字...:p 和未定義的行爲,如果調用如果(iPivot> = SIZE_MAX)返回-1;如果(iPivot> = SIZE_MAX)返回-1,則可以在開始時添加一個檢查,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,! – 51k

0

函數srand僅初始化的僞隨機數發生器。

你可能想要做這樣的事情:

char array[26]; 
for(int x = 0; x < 26 ; x++) 
    array[x] = rand()%10 + '0'; 

array[25] = '\0' 
+0

謝謝。但它只生成25個隨機數。我需要生成25位數字並將其存儲在數組中。 – AMZZ