C ++生成25位数的随机数?

时间:2014-02-19 11:29:00

标签: c++ random

如何使用rand()生成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位数字并将其存储在一个数组中。

3 个答案:

答案 0 :(得分:2)

声明一个包含二十六个字符的数组。在从零到二十四(包括)的循环中,生成'0''9'之间的随机值,并添加到数组中。使用字符串终止符终止数组。现在你有一个带有25个随机十进制数字的字符串


对于实际的随机数生成,我建议您查看新的C ++ 11 random number functionality,尤其是std::uniform_int_distribution

将其与std::generate中的standard algorithm library功能相结合,您只需几行即可完成。

答案 1 :(得分: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;
}

答案 2 :(得分:0)

srand只初始化了伪随机数生成器。

您可能想要这样做:

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

array[25] = '\0'