以下は、rand()関数の使用を習得したサンプルプログラムです。Cプログラミング - rand()の奇妙な出力
プログラムが実行されるたびに、rand()(プログラムの出力ではrand [0])によって生成された最初の数が〜と同じです。それは同じではありませんが、数字は常に最後に生成された数よりわずかに大きいだけです。 rand [1-4]は許容されるようにランダムに見える。誰が何が起こっているのか、そしてなぜそれを説明できますか?
は、この出力例で見てみましょう:
[[email protected] C] $ ./a.out
rand[0]= 277735441 <<<??????
rand[1]= 1417591956
rand[2]= 1284424674
rand[3]= 819876274
rand[4]= 1405457966
[[email protected] C] $ ./a.out
rand[0]= 277769055 <<<???????
rand[1]= 1982542454
rand[2]= 234757526
rand[3]= 642279943
rand[4]= 1546192179
[[email protected] C] $ ./a.out
rand[0]= 277785862 <<<???????
rand[1]= 117534056
rand[2]= 1857407599
rand[3]= 1627223601
rand[4]= 542817462
ソースコードを:
/*
* rand: Generates 5 numbers using standard "srand()/rand()" function
*
* SAMPLE OUTPUT:
* rand[0]= 824522256
* rand[1]= 1360907941
* rand[2]= 1513675795
* rand[3]= 1046462087
* rand[4]= 253823980
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int
main (int argc, char *argv[])
{
/* Simple "srand()" seed: just use "time()" */
unsigned int iseed = (unsigned int)time(0);
srand (iseed);
/* Now generate 5 pseudo-random numbers */
int i;
for (i=0; i<5; i++)
{
printf ("rand[%d]= %u\n",
i, rand());
}
return 0;
}
'rand'はかなり駄目で壊れています。私の理解は、これはクラスや何かのためのものです。ある日、擬似乱数を本当に使用する必要がある場合は、別のライブラリを探すようにしてください。 – zneak