产生随机的超递增数列

超递增数列是指这样一种数列,该数列的每一项都比它前面所有项加起来之和还要大。比如数列 1,2,5,10,20,50… 该数列每一项都大于前面所有项之和,因此是超递增数列。请编写一个函数,用于产生随机的超递增数列,每次产生的数列应该有8个项,它们是8个DWORD值。数列中的项最大不能超过DWORD类型所能表示的最大范围(即最后一个项数不能超过0xFFFFFFFF)。函数原型如下:
void MakeBagData(DWORD lpBuffer[8]);
lpBuffer 为输入/输出缓冲区,DWORD lpBuffer[8] 表示函数期待的缓冲区大小为8个DWORD值大小。缓冲区由调用方负责创建并传入,函数的实现需要产生8个DOWRD值,并填充到该缓冲区中。
要求:下面有一个该函数的实现,请理解该实现的意图,并补充完整空缺处的表达式。
注:rand() 或 ((double)rand()) / ((double)RAND_MAX) 可用于获取随机数。
void MakeBagData(DWORD dwValues[8])

{
DWORD dwSum = 0;
for (int i = 0 ; i < 8 ; i++)
{
dwValues[i] = ________________________________________ ;
dwSum += dwValues[i];
}
}

等比数列 公比大于2 是符合条件的吗?
生成一个随机数 max尽量大>10^8,q尽量小< 10,然后每次让max / q 向下取整数,这样可以不?