C言語のSrand(time(0))およびrand()



Srand Rand C Language



参照:

https://blog.csdn.net/kongfanyu/article/details/6387642



https://www.cnblogs.com/xiaoxiaoxin-love-ping/p/3528849.html


コンピューターには実際の乱数を生成する方法がなく、アルゴリズムによってシミュレートされるため、randを呼び出すだけで、出てくるものは毎回同じです。シードを設定した後、シードに応じて異なる番号を生成できます。そして、シードの違いを確実にする方法は?もちろん、最も簡単な方法は、常に先を行く時間を使用することです。




srand(time(0))//最初にシードを設定します
rand()//次に乱数を生成します
Srandはランダムシード番号です。毎回作る種は違います。ランドが取得する乱数は異なります。毎回次の異なるシードを植えるために、時間(0)を使用します。時間(0)は、現在の時間値を取得します(時間は毎回同じではないため)。

srand(time(0))
アルゴリズムに開始シードを与えることです。これは、アルゴリズムのランダムシード番号です。この番号の後に、乱数を生成できます。
1970.1.1から現在までの秒数で乱数シードを初期化します。


リファレンスケース



#include #include #include void main( void ) { int i srand(time(0)) /* Output 10 random numbers. */ for( i = 0 i <10i++ ) printf( ' %6d/n', rand() ) }


出力:

22614
15772
30620
24913
7556
31659
27876
27229
25083
16564
何かキーを押すと続行します


[0,6)の間でどのように乱数を作成しますか?

宛先乱数が[0、6)の間に収まるように、rand()の戻り値を6で変調する必要があります。そうしないと、rand()自体の戻り値が非常に大きくなる可能性があります。
一般的な式は次のとおりです。
[a、b)の間のランダムな整数を取得するには、次を使用します。 (rand()%(b-a))+ a (結果の値には、bなしでaが含まれます)。
aが0の場合、rand()%bと省略されます。