随机数生成器帮助不生成随机数 - C.

时间:2012-10-03 19:07:04

标签: c random numbers generator

我正在制作一个类似于游戏代码破坏者或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);



}

3 个答案:

答案 0 :(得分:7)

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

srand(time(NULL));

提供更多信息here

答案 1 :(得分:1)

真正的随机发电机价格昂贵 rand()函数生成一个看似随机的序列,但它总是相同的 这条线
srand(time(NULL));
只会将其初始化为某个值,这个值很可能每次都不同,这样就可以得到你想要的东西 对于游戏来说,这可能已经足够了。如果你需要更进一步,并有一个更随机的序列,你可以尝试根据用户输入生成一些东西,如击键时间,鼠标移动和时间。
如果没有专门的硬件,那就差不多了。

答案 2 :(得分:0)

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

 #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);



}