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で動かなかった

