例えばsrandom(1)で初期化した後、random()を100万回呼んだときの状態を保存したい。pythonだと簡単にできるのだけど、Cだと難しい。 マニュアルにinitstate()とsetstate()という関数が載っているが、使い方がさっぱりわからなかった。検索すると「必要な回数ループしろ」なんていうダメ回答しか見つからない。仕方ないので頑張ってソースを読んだ。 アルゴリズムはわからないが、何をやってるかは理解できる。 initstate()で状態配列を初期化 setstate()で保存済の状態配列を設定 状態配列の先頭に、乱数生成器のタイプと状態配列の位置情報がまとめて保存されている。 この値は、ソース内で state[-1] と書かれている。stateは状態配列の2個目の要素を指すポインタ。 random()を呼ぶたびに状態配列のポインタが動くが、state[-1]が更新され