2011/03/04
■ ランダム定跡の工夫
自動対戦で、同一対局を避けるために定跡を乱数化しているが、
srandでシードを設定した後、同じ乱数列が生成されるので、進行が同一となり面白くない。
そこで、rdtscを使い定跡を散らすことにする。
unsigned int my_rand() { #ifdef _MSC_VER return (unsigned int)__rdtsc(); #else #if defined(__i386) || defined(__x86_64) // x86なら unsigned int eax, edx; __asm__ volatile("rdtsc" : "=a"(eax), "=d"(edx)); return eax; // 下の32bitだけを返す #else return rand(); // x86以外ならrandを使いましょう #endif #endif }
'11/04/08 修正: 条件マクロのバグにより64bitで動かなかった