MSC30-C. 疑似乱数の生成に rand() 関数を使用しない 疑似乱数生成器は数学的アルゴリズムを用いて数列を生成する。生成される数列は統計的には十分な乱数特性を持つが、真にランダムではない。 C の標準関数 rand() には、生成する乱数列の特性についてなんの保証もない。rand() の実装によっては、生成される数値列の周期が比較的短くなってしまい、どのような値が生成されるか予測される恐れがある。良い乱数特性を必要とするアプリケーションは、必要とする乱数特性を持つことが保証されている擬似乱数生成器を使わなければならない。 違反コード 以下のコード例は、rand() 関数を使って生成された数値部分を持つ識別子を生成する。生成された識別子は予測可能であり十分にランダムではない。 #include <stdio.h> #include <stdlib.h> enum { len = 1