random_r 関数は glibc が提供しているリエントラントな擬似乱数生成APIです。 複数のスレッドで乱数を使いたい場合はこれを使うべきらしい。*1 複数のスレッドが random() を使うような状況では、この関数を使用すべきではない。 その場合には random_r(3) を使うこと。 http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/random.3.html ただ少なくともこのマニュアルが不十分で、man を読んだだけだと正しく使うことは出来ません。 以下に私の手元で 動いたように見える コードを示します。 /* * $ gcc -o test test.c && ./test */ #include <stdio.h> #include <stdlib.h> int main (int argc, char * a