无法改变randoms的总数

时间:2015-12-03 13:12:24

标签: c random

我的代码:

ClassB

它随机给了我一些字母,但我无法弄清楚如何随机完成总结。

替换必须在5-10之间。

例如:

  • 第一次尝试:xjhdhfe
  • 第二次尝试:ytfxsszp
  • 第3次尝试:qwety

3 个答案:

答案 0 :(得分:1)

您每次都会获得相同的输出,因为您没有播种随机数生成器。您需要致电srand来执行此操作。否则,它总是使用1的种子。

此外,您获得的y的值将介于7 - 10而不是5 - 10.为此,请使用y=5+rand() % 6;

最后,word不足以容纳10个字符的字符串。您需要使大小11为NULL终止符腾出空间。此外,生成单词后,您需要手动添加NULL终止符。

完成上述操作后,您的代码应如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>

int main()
{
    int z,x,y=0;
    char word[11];

    srand(time(NULL) ^ getpid());
    for(z=0; z <1; z++)
    {
        y=5+rand() % 6;
        for(x=0; x<y ; x++){
            word[x]= rand()%26+'a';
        }
        word[y] = '\0';
        printf("%s\n\n",word);
    }
}

答案 1 :(得分:0)

在调用rand()函数之前,您应该使用

之类的东西启动种子
srand(time(NULL));
在循环之前

然后做:

y=5+rand() % 6;

对于你的第二个循环,它应该在5-10之间ramdomize y

问候。

答案 2 :(得分:0)

对您的计划进行一些更正:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>                   // required for srand() seed

int main(void)                      // correct function signature
{ 
    int z, x, y=0;
    char word[11];                  // increase array size to allow for \0
    srand((unsigned)time(NULL));    // call once at the start of the program
    for(z=0; z<3; z++)
    {
        y = 5 + rand() % 6;         // gives result between 5 and 10
        for(x=0; x<y; x++){
            word[x]= rand() % 26 + 'a';   
        } 
        word[x] = '\0';             // terminate the string
        printf("%s\n",word);   
    }
    return 0;                       // return value from main()
}

节目输出:

rpaelg
pglhhbgvvz
eakcs