0001 #include <cstdlib> 0002 #include <typeinfo> 0003 #include <ctime> //通常用当前时刻设置随机种子 0004 using Rank = uint32_t; //DSACPP全篇统一 0005 0006 static Rank dice(Rank range) { //取随机数:最大范围 = [0, range) = 2^60 - 1 = 0x0FFFFFFFFFFFFFFF 0007 uint64_t x = RAND_MAX < range ? 0008 (uint64_t)rand() << 45 0009 | (uint64_t)rand() << 30 0010 | (uint64_t)rand() << 15 0011 | (uint64_t)rand() 0012 : rand(); 0013 return x % range; 0014 } 0015 static Rank dice(Rank lo, Rank hi) { return lo + dice(hi-lo); } 0016 static float dice(float range) { return rand() % (1000*(int)range) / (float)1000.; } 0017 static double dice(double range) { return rand() % (1000*(int)range) / (double)1000.; } 0018 static char dice() { return (char)(32 + rand() % 96); }