【问题标题】:Random Number Generator Help Not producing random numbers - C随机数生成器帮助不产生随机数 - C
【发布时间】:2012-09-24 18:34:43
【问题描述】:

我正在制作一个类似于游戏代码破解器或 Mastermind 的小型 C 程序。到目前为止,这是我的代码。到目前为止,它所做的只是生成一个“随机”代码并打印代码的数组。每次我编译它时,它都会生成相同的 2、2、6、3 数组。谁能帮我弄一个真正的随机数生成器?

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define CODELENGTH 4
#define NUMSYMBOLS 6
const int LOW = 1;
const int HIGH = 6;




 void genCode (int MasterCode[])
{
int i=0;
int k;
while (i < 4){

MasterCode[i] =rand() %(HIGH-LOW+1)+LOW;
    i++;

}//end while loop.
for ( k = 0 ; k < 4; k++ ) {
    printf( "%d ", MasterCode[ k ] );
}

printf( "\n" );
  }





 void getGuess (int guess[])
 {
int b[ 4 ];
int number = 0;

printf( "Please enter your list of 4 numbers between 1 and 6: " );
int j;
int k;
for ( j = 0 ; j < 4; j++ ) {
    scanf( "%d", &number );
    b[ j ] = number;
}

printf( "Your array has these values: " );

for ( k = 0 ; k < 4; k++ ) {
    printf( "%d ", b[ k ] );
}

printf( "\n" );
}




 int main (int argc, char **argv)
{
int MasterCode[4];
genCode(MasterCode);



}

【问题讨论】:

标签: c random numbers generator


【解决方案1】:

您需要在使用rand() 之前播种随机数生成器。这通常是这样完成的:

srand(time(NULL));

更多信息here

【讨论】:

  • 谢谢我在 C 参考网站上查找了 rand 函数,这是我的问题。谢谢
【解决方案2】:

我所做的是删除了我最初为范围设置的等式,将其转换为更简单的东西,然后我在 main.js 中添加了种子生成器。

 #include<stdio.h>
 #include<math.h>
 #include<stdlib.h>
 #include<time.h>
 #define CODELENGTH 4
 #define NUMSYMBOLS 6




 void genCode (int MasterCode[])
 {
int i=0;
int k;
while (i < 4){

MasterCode[i] =rand() %6 +1;
    i++;

}//end while loop.
for ( k = 0 ; k < 4; k++ ) {
    printf( "%d ", MasterCode[ k ] );
}

printf( "\n" );
 }





 void getGuess (int guess[])
 {
int b[ 4 ];
int number = 0;

printf( "Please enter your list of 4 numbers between 1 and 6: " );
int j;
int k;
for ( j = 0 ; j < 4; j++ ) {
    scanf( "%d", &number );
    b[ j ] = number;
}

printf( "Your array has these values: " );

for ( k = 0 ; k < 4; k++ ) {
    printf( "%d ", b[ k ] );
}

printf( "\n" );
 }




 int main (int argc, char **argv)
 {
srand ( time(NULL) );
int MasterCode[4];
genCode(MasterCode);



}

【讨论】:

    【解决方案3】:

    真正的随机生成器很昂贵。
    rand() 函数生成一个看似随机的序列,但它始终相同。
    线
    srand(time(NULL));
    只会将其初始化为某个值,该值很可能每次都不同,这将为您提供您想要的。
    对于游戏来说,这可能就足够了。如果您需要更进一步并拥有更随机的序列,您可以尝试根据用户输入生成一些内容,例如击键时间、鼠标移动和时间。
    这几乎是您在没有专门硬件的情况下所能获得的接近程度。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 2015-06-27
    • 2015-02-16
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多