srand() 系の関数に渡す際に良さそうな値がありました。
実行しているプログラムのプロセス ID とスレッド ID を取得する関数です。プロセス ID はポインタを渡して値を詰めてもらいます。
DWORD processID = 0; DWORD threadID = GetWindowThreadProcessId(hWindow, &processID);
時間だけだとサーバサイドのゲームでは危険が伴いますが、プロセス ID とスレッド ID を使って加工すれば結構良い感じの値が作れるのではないでしょうか。もし UNIX 系の OS の場合は /dev/random の値も良さそうです。
本当は Windows でも ThinkPad のようなマシンには TPM による精度の良い乱数生成ユニットがあるのですが、プログラムから参照する方法がわかりません。一般的な技術になってほしいですよね。
Contributions