Cè¨èªã® rand()é¢æ°ã®ãµã³ãã«ããã°ã©ã ã§ãã
Â
rand()é¢æ°ã¯ã0 ãã RAND_MAX ã¾ã§ã®æ´æ°ãè¿ãã¾ãã決ã¾ããã£ãäºãå®è¡ããäºãå¾æãªã³ã³ãã¥ã¼ã¿ã¼ã«ã¨ã£ã¦ãä¹±æ°ãçæããã®ã¯é£ããä½æ¥ã§ãããã®ããå®éã«ã¯ç´ç²ã«ã©ã³ãã ãªæ°åã§ã¯ç¡ããç似乱æ°ãè¿ãã¦ãã¾ããã¤ã¾ããããããã決ããããæ°å¤ãé çªã«è¿ãã¦ãã¾ãããã®äºã¯ãsrand()é¢æ°ã®ãµã³ãã«ã³ã¼ããã®è¨äºã§ç¢ºèªãã¦ããã®ã§ãã¡ããèªãã§ã¿ã¦ä¸ããã
Â
ä»åã®ãµã³ãã«ã³ã¼ãã§ã¯ãrand()é¢æ°ãåããå°ãªãåä¸çãªæ°å¤ãè¿ãã¦ãããäºãå¤ãããã«æ¸ãã¦ã¿ã¾ããã
Â
- rand() ç似乱æ°ãè¿ã
- #include <stdlib.h>
- int rand( void );
- rand()é¢æ°ã¯ãå¼ã³åºããããã³ã« 0 ãã RAND_MAX ã¾ã§ã®æ´æ°ãè¿ãã¾ããRAND_MAX 㯠stdlib.h ãã¡ã¤ã«ã§å®ç¾©ããã¦ãã¦ãANSI Cæ¨æºã§ã¯å°ãªãã¨ã 32,767 ã®å¤ãæã¤ã¨å®ç¾©ããã¦ãã¾ãã
ç®æ¬¡
ãµã³ãã«ã³ã¼ã
[rand.c]
#include <stdio.h> Â Â Â Â Â /* printf(), puts(), fputs */
#include <stdlib.h> Â Â Â Â /* rand(), srand() */
#include <time.h> Â Â Â Â Â /* time() */
/* ä¹±æ°åãåæåãããã¯ã */
#define RANDOMIZE() Â Â (srand(time(NULL)))
/* 0ï½(x-1)ã®ä¹±æ°ãçæãããã¯ã */
#define RANDOM(x)    (rand()%(x))#define TEST_CYCLE    2000  /* rand()é¢æ°ãå¼ã³åºãåæ° */
#define NMAX       50   /* ä¹±æ°ã®ä¸éãµã¤ãºï¼ 0 ãã (NMAX-1) ã®æ´æ°ãè¿ãï¼ */
int main( void )
{
  static int  kekka[ NMAX ];
  int     idx;
  int     val;  for( idx=0; idx<NMAX; idx++ )
    kekka[ idx ] = 0;  /* çµææ ¼ç´ãã¼ãã«ãåæåãã */  RANDOMIZE();       /* ä¹±æ°åãåæåãã */
  for( idx=0; idx<TEST_CYCLE; idx++ ){
    val = RANDOM( NMAX );
    kekka[ val ]++;
  }  /* éè¨çµæãã°ã©ã表示ãã */
  puts( "         1     2     3     4     5" );
  puts( "    0   +   0   +   0   +   0   +   0   +   0" );
  for( idx=0; idx<NMAX; idx++ ){
    printf( "%5d: ", idx );
    while( kekka[ idx ] ){
      fputs( "#", stdout );
      kekka[ idx ]--;
    }
    fputs( "\n", stdout );
  }
  puts( "    0   +   1   +   2   +   3   +   4   +   5" );
  puts( "    0     0     0     0     0     0" );  return 0;
}
Â
å®è¡ä¾
ãµã³ãã«ã³ã¼ãã§ã¯ã2000åã®rand()é¢æ°ã®å¼ã³åºãæ¯ã«ã50ã®å¤§ããã®ä¸ã§åæ£ããä¹±æ°ãå¾ã¦ãã¾ãã綺éºã«åæ£ããä¹±æ°ãå¾ã¦ããã¨ããã°ã0 ãã 49 ã®åæ°å¤ã®çºçæ°ã¯ã2000 / 50 㧠40å ã¨ãªãã¾ããã¤ã¾ãã40åãä¸å¿ã«ã©ã®ç¨åº¦ããã¦ããã®ãã確èªã®ãã¤ã³ãã¨ãªãã¾ãã
Â
Windows 10, Visual Studio 2022, x86 Native Tools Command Prompt
>set CFLAGS=/nologo /source-charset:utf-8 /execution-charset:shift_jis
>cl %CFLAGS% /Fe:rand_msvc rand.c
rand.c
>
>rand_msvc.exe
        1     2     3     4     5
   0   +   0   +   0   +   0   +   0   +   0
  0: #############################################
  1: #####################################################
  2: ##############################################
  3: ###########################################
  4: ########################################
  5: ##################################
  6: ##############################################
  7: ##################################################
  8: ###################################
  9: #################################
  10: #################################################
  11: ##################################
  12: ###########################################
  13: #################################
  14: #####################################
  15: #####################################
  16: ######################################
  17: ############################
  18: ###########################################
  19: #########################################
  20: ##########################################
  21: ####################################
  22: ##############################
  23: ###################################
  24: ##############################
  25: ##########################################
  26: ##############################################
  27: ############################################
  28: ###################################
  29: ##############################################
  30: ###############################################
  31: #######################################
  32: #########################################
  33: ##############################
  34: ########################################
  35: ###############################################
  36: ########################################
  37: ###############################################
  38: ####################################
  39: ##############################################
  40: ######################################
  41: ############################################
  42: ######################################
  43: ###################################
  44: ###################################################
  45: ######################################
  46: ##################################
  47: #######################################
  48: ###############################
  49: #############################################
   0   +   1   +   2   +   3   +   4   +   5
   0     0     0     0     0     0
>
Â
CentOS Stream 9, gcc (GCC) 11.3.1
$ gcc -Wall -O2 -o rand_centos9 rand.cÂ
$Â
$ ./rand_centos9Â
        1     2     3     4     5
   0   +   0   +   0   +   0   +   0   +   0
  0: #############################################
  1: #########################
  2: ######################################
  3: ############################################
  4: ##################################################
  5: ###########################
  6: ###############################################
  7: #########################################
  8: ################################
  9: ##############################
  10: ###############################################
  11: ###################################################
  12: #######################################
  13: #########################################
  14: #############################
  15: ###################################
  16: ##############################
  17: #############################################
  18: ###########################################
  19: #################################
  20: #######################################
  21: ###############################
  22: ################################
  23: ########################################
  24: ################################
  25: ##################################
  26: ########################################
  27: ####################################################
  28: ###############################################
  29: ########################################
  30: ################################################
  31: #################################################
  32: #########################################
  33: #############################################
  34: ###########################################
  35: ############################################
  36: ################################
  37: #####################################
  38: ##################################################
  39: #####################################
  40: ###########################################
  41: ################################################
  42: ##############################################
  43: ####################################
  44: ################################################
  45: #######################################
  46: ##########################################
  47: ################################
  48: ########################################
  49: #########################################
   0   +   1   +   2   +   3   +   4   +   5
   0     0     0     0     0     0
$
Â
Cygwin 3.3.6-1, gcc (GCC) 11.3.0
$ gcc -Wall -O2 -o rand_cygwin rand.c
$
$ ./rand_cygwin.exe
        1     2     3     4     5
   0   +   0   +   0   +   0   +   0   +   0
  0: #################################
  1: ###################################
  2: ########################################
  3: ############################
  4: ###################################
  5: #######################################
  6: #################################
  7: #########################################
  8: #########################################
  9: #########################################
  10: ########################################
  11: ############################################
  12: ###############################################
  13: ##############################################
  14: ########################################
  15: ################################################
  16: #######################################################
  17: ####################################################
  18: ##############################
  19: ########################################
  20: ######################################
  21: ############################
  22: #################################
  23: #########################################
  24: ####################################
  25: ################################################
  26: ##############################
  27: #########################################
  28: #########################################
  29: ###########################################
  30: ##############################
  31: #################################################
  32: ###########################################
  33: #########################################
  34: ##################################
  35: ##################################
  36: #############################################
  37: ############################################
  38: #####################################################
  39: ############################################
  40: #####################################
  41: ###############################################
  42: ################################################
  43: ##############################################
  44: ##########################
  45: ####################################
  46: ####################################
  47: ###################################
  48: ###########################################
  49: ##########################################
   0   +   1   +   2   +   3   +   4   +   5
   0     0     0     0     0     0
$
Â
Android, Termux 0.118.0, clang 15.0.2
$ gcc -Wall -O2 -o rand_termux rand.c
$
$ ./rand_termux
        1     2     3     4     5
   0   +   0   +   0   +   0   +   0   +   0
  0: ##################################
  1: ########################################
  2: ##############################################
  3: ################################################
  4: ##########################################
  5: ###########################################
  6: ################################
  7: ###########################
  8: ##################################################
  9: #########################################
  10: ####################################
  11: ################################################
  12: ####################################################
  13: ###################################
  14: #########################################
  15: ######################################
  16: ####################################
  17: #########################################
  18: ####################################
  19: ###########################
  20: ###########################################
  21: ###########################################
  22: #####################################################
  23: ##########################################
  24: #######################################
  25: ###################################
  26: ###############################################
  27: ###########################################
  28: ################################################
  29: ##################################
  30: ###############################################
  31: ###########################################
  32: #######################################
  33: ########################################
  34: ###############################
  35: ############################################
  36: ##############################################
  37: #############################################
  38: ###############################################
  39: ################################
  40: #########################################
  41: ############################################
  42: #############################################
  43: ####################
  44: #######################################
  45: ###################################
  46: ################################
  47: ######################################
  48: ###############################
  49: #########################################
   0   +   1   +   2   +   3   +   4   +   5
   0     0     0     0     0     0
$
Â
極端ãªåãã¯çºçãã¦ããªãäºãå¤ãã¨æãã¾ããä»åã¯2000åã®å¼ã³åºãåæ°ã§ãã¹ããã¾ããããå¼ã³åºãæ°ãå¢ããã°æ´ã«åçã«ã°ããã¦ãããããããã¾ããã
é¢é£è¨äº
Â