1 //要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 左闭右开 2 int RandomInRange_leftClose_rightOpen(int a, int b) 3 { 4 srand((unsigned int)time(NULL)); 5 return (rand() % (b-a))+ a; 6 } 7 //要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 8 int RandomInRange_leftClose_rightClose(int a, int b) 9 { 10 srand((unsigned int)time(NULL)); 11 return (rand() % (b-a+1))+ a; 12 } 13 //要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 14 int RandomInRange_leftOpen_rightClose(int a, int b) 15 { 16 srand((unsigned int)time(NULL)); 17 return (rand() % (b-a))+ a + 1; 18 }
注意,由于rand()直接产生的数据范围很大(0~RAND_MAX),其中RAND_MAX在VS2010下为0x7fff,也就是32767。因此要获取的数据量较少时所获得数字并不是完全随机的,但数据量足够的时候是随机的。