「C言語/標準ライブラリ/stdlib.h」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
DL化
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎srand関数: 実装例
タグ: 2017年版ソースエディター
299 行
</syntaxhighlight>
=== srand関数 ===
<ref>『JISX3010:2003』p.225「7.20.2.2 srand関数」</ref>
; 形式
:<syntaxhighlight lang=c>
312 行
:srand関数とは、rand関数の呼び出しで返す新しい疑似乱数列の種として、seedを使用する関数である。
:srand関数を同じ種の値で呼んだ場合、rand関数は同じ疑似乱数列を生成する。
:rand関数をsrand関数の呼び出しより前にんだ場合、srandが最初に種の値を1として呼ばれた時と同じ列を生成する。
:srand関数は、他の疑似乱数列生成関数の呼び出しとのデータ競合を避けるために必要ではない。
:実装では、ライブラリ関数がsrand関数を呼び出していないかのように動作する。
:srand関数は値を返さない。
; 例
{{See also|[[#rand関数]]を参照せよ。}}
 
ISO/IEC 9899:201x §7.22.2.2 The srand function ¶5 で<ref name="jtc1-sc22-wg14-n1570-7.22.2.2">{{cite book
| url = http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
| title = N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x
| page=347, §7.22.2.2 ''The srand function''
| publisher = ISO/IEC}}</ref>、 The following functions define a portable implementation of '''rand''' and '''srand'''. としてとして以下のようなコードを示している(RAND_MAXは32767と仮定)。
:<syntaxhighlight lang=c>
static unsigned long int next = 1;
int rand(void) // RAND_MAX assumed to be 32767
{
next = next * 1103515245 + 12345;
return (unsigned int)(next / 65536) % 32768;
}
void srand(unsigned int seed)
{
next = seed;
}
</syntaxhighlight>
 
== 記憶域管理関数 ==