求一算法:如何随机产生一个最高位为1,低位的倒数第二位为0的32位整数

求一算法:怎么随机产生一个最高位为1,低位的倒数第二位为0的32位整数?
求一算法:怎么随机产生一个最高位为1,低位的倒数第二位为0的32位整数?

------解决方案--------------------
srand(time(NULL));
unsigned int a=rand();
a = ((a < <1)|(a&1))&(~2);
a = a|(rand() < <16);
a |= 0x80000000;
cout < <a < <endl;