
Cè¨èªã® srand() 颿°ã®ãµã³ãã«ããã°ã©ã ã§ãã
srand()颿°ã¯ãç似乱æ°ãè¿ã rand()颿°ã®éå§ç¹ãè¨å®ãã¾ãã
éã«è¨ãã¨ãsrand()颿°ãã³ã¼ã«ããªãã¨ãrand()颿°ã¯æ¯ååãæããéå§ããäºã«ãªãã¾ãããã®äºã確èªããããã°ã©ã ãæ¸ãã¦ã¿ã¾ãã
Â
- srand()颿°: çä¼¼ä¹±æ°æ´æ°ç³»åã®æ°ãã種ãæå®ãã
- #include <stdlib.h>
- void srand( unsigned seed );
ç®æ¬¡
ãµã³ãã«ã³ã¼ã
[srand.c]
#include <stdio.h> Â Â Â Â Â /* printf() */
#include <stdlib.h> Â Â Â Â /* rand(), srand() */
#include <time.h> Â Â Â Â Â /* time() */
/* ä¹±æ°åãåæåãããã¯ã */
#define RANDOMIZE() Â Â (srand(time(NULL)))
/* 0ï½(x-1)ã®ä¹±æ°ãçæãããã¯ã */
#define RANDOM(x) Â Â Â (rand()%(x))
void prt( void )
{
  int   i;
  for( i=1; i<=5; i++ ){
    printf( " %2d: %5d\n", i, RANDOM( 100 ) );
  }
  return;
}
int main( int argc, char *argv[] )
{
  printf( "before srand()\n" ) ;
  prt();    /* srand()å: ãåãå¤ã */  RANDOMIZE();
  printf( "after  srand()\n" );
  prt();    /* srand()å¾: ãéãå¤ã */  return 0;
}
Â
å®è¡ä¾
Windows 10, Visual Studio 2022, x86 Native Tools Command Prompt
>set CFLAGS=/nologo /source-charset:utf-8 /execution-charset:shift_jis
>cl %CFLAGS% /Fe:srand_msvc srand.c
rand.c
>
>srand_msvc.exe   â 1åç®ã®å®è¡
before srand()
 1:   41
 2:   67
 3:   34
 4:   0
 5:   69
after  srand()
 1:   22
 2:   13
 3:   76
 4:   22
 5:   19
>srand_msvc.exe   â 2åç®ã®å®è¡
before srand()
 1:   41    â 1åç®ã¨åãå¤ãè¿ããã¦ãã
 2:   67     â
 3:   34
 4:   0
 5:   69
after  srand()
 1:   35    â srand()颿°ã®å¼ã³ã ãå¾ã¯éãå¤
 2:   39     â
 3:   97
 4:   72
 5:   10
>
Â
CentOS Stream 9, gcc (GCC) 11.3.1
$ gcc -Wall -O2 -o srand_centos9 srand.c
$
$ ./srand_centos9   â 1åç®ã®å®è¡
before srand()
 1:   83
 2:   86
 3:   77
 4:   15
 5:   93
after  srand()
 1:   83
 2:   43
 3:   11
 4:   37
 5:   34
$ ./srand_centos9  â 2åç®ã®å®è¡
before srand()
 1:   83    â 1åç®ã¨åãå¤ãè¿ããã¦ãã
 2:   86    â
 3:   77
 4:   15
 5:   93
after  srand()
 1:   39    â srand()颿°ã®å¼ã³ã ãå¾ã¯éãå¤
 2:   46    â
 3:   68
 4:   85
 5:   20
$
Â
Cygwin 3.3.6-1, gcc (GCC) 11.3.0
$ gcc -Wall -O2 -o srand_cygwin srand.c
$
$ ./srand_cygwin.exe   â 1åç®ã®å®è¡
before srand()
 1:   33
 2:   43
 3:   62
 4:   29
 5:   0
after  srand()
 1:   25
 2:   11
 3:   2
 4:   31
 5:   43
$ ./srand_cygwin.exe  â 2åç®ã®å®è¡
before srand()
 1:   33    â 1åç®ã¨åãå¤ãè¿ããã¦ãã
 2:   43    â
 3:   62
 4:   29
 5:   0
after  srand()
 1:   29    â srand()颿°ã®å¼ã³ã ãå¾ã¯éãå¤
 2:   89    â
 3:   58
 4:   34
 5:   2
$
Â
Android, Termux 0.118.0, clang 15.0.2
$ gcc -Wall -O2 -o srand_termux srand.c
$
$ ./srand_termux   â 1åç®ã®å®è¡
before srand()
 1:   83
 2:   86
 3:   77
 4:   15
 5:   93
after  srand()
 1:   47
 2:   85
 3:   15
 4:   49
 5:   73
$ ./srand_termux  â 2åç®ã®å®è¡
before srand()
 1:   83    â 1åç®ã¨åãå¤ãè¿ããã¦ãã
 2:   86    â
 3:   77
 4:   15
 5:   93
after  srand()
 1:   72    â srand()颿°ã®å¼ã³ã ãå¾ã¯éãå¤
 2:   86    â
 3:   55
 4:   17
 5:   21
$
é¢é£è¨äº
Â