3

我正在制作一个小的 C 程序来类似于游戏代码破坏者或 Mastermind。到目前为止,这是我的代码。到目前为止,它所做的只是生成一个“随机”代码并打印代码的数组。每次我编译它时,它都会生成相同的 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);



}
4

3 回答 3

7

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

srand(time(NULL));

更多信息可在此处获得。

于 2012-10-03T19:08:29.387 回答
1

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

于 2012-10-03T20:20:59.587 回答
0

我所做的是删除了我最初为范围设置的等式,将其切换为更简单的东西,然后我在 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);



}
于 2012-10-03T19:12:40.813 回答