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

C++ C++;生成25位随机数?,c++,random,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

如何使用
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;
 }
使用名称空间std;
int main(int argc,字符**argv)
{
srand(时间(0));
char arr[26]={0};
对于(int i=0;i<26;i++){
arr[i]=rand()%10+'0';
}
对于(int i=0;i<25;i++){

cout声明一个由26个字符组成的数组。在从0到24(含)的循环中,生成一个介于
'0'
'9'
之间的随机值,并添加到数组中。使用字符串终止符终止数组。现在,您有了一个包含25个随机十进制数字的字符串


对于实际的随机数生成,我建议您特别关注新的C++11


将其与中的函数相结合,只需几行即可完成。

这是我使用的逻辑

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;
}
intgetrandom()
{
常数int size=10;
静态int-iBuff[10]={0,1,2,3,4,5,6,7,8,9};
静态int-iPivot=0;
如果(iPivot>=大小)
{

对于(iPivot=0;iPivotsr),仅初始化伪随机数生成器

您可能希望执行以下操作:

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

array[25] = '\0'
char数组[26];
对于(int x=0;x<26;x++)
数组[x]=rand()%10+'0';
数组[25]='\0'

告诉我们到目前为止您尝试了什么,问题是什么。我知道如何生成4-5位数字。但不是25位数字……您知道和之间的区别吗?@AMZZ:在您整理问题之前,这将遭受严重的向下投票(甚至可能导致您被禁止提问).你想要一个25位的随机数吗?如果是,为什么要提到“字符数组”?仍然不清楚。为什么标题与问题文本如此不同?你想要一个25位的随机数吗?我不认为这会给你一个很好的分布,但它可能已经足够好了。另外,一点
常量
会杀死你吗?;)也许你可以解释一下这个逻辑?我正在努力弄清楚它是如何生成一个25位数的数字的;它看起来更像是生成一个由8个数字组成的随机排列,如果你调用它超过8次,就会出现未定义的行为。嗯,我出去了一段时间,@mike my bad,我没有正确地阅读这个问题,我将它解释为,你想要吗o生成0-25…:p之间的随机数,对于未定义的行为,如果调用超过8次,则可以在开始处添加检查,如果(iPivot>=SIZE\u MAX)return-1;@Hulk如问题所述,代码已更正,函数可以在循环中调用,输出可以存储到数组中。关于错误做法和错误案例处理,我认为应该由使用代码的人来完成,至少我可以预期。@mike需要做一些小的更改来处理错误或者,将其从8位随机数转换为25位随机数。我希望我不需要告诉一些小事情,比如,我假设需要设置一个好的种子值来使用rand函数。谢谢。但它只生成25位随机数。我需要生成25位随机数并将其存储在数组中。你能用rand()显示第一个方法的代码吗?@AMZZ这基本上就是你的问题,但是你有26位而不是25位,因此覆盖了结尾的零,并且没有字符串。好的。但是程序生成25个随机数,而不是25位随机数number@AMZZ但是这些数字中的每一个都是一个数字吗?请记住,在输出的每个数字之间打印一个空格e如问题所示,代码应打印25个随机数字。