关于随机数的算法问题?
void CGuessDlg::OnButton1()
{
int temp,pnum[35],num[7]; //临时变量,临时数组
for(int i=0;i<35;i++) //共有36个数组元素
pnum[i]=i+1;
//***选号***//
for(i=0;i<7;i++)
{
srand( (unsigned)time( NULL ) );
temp=rand();
temp=temp%36+1; //得到一个1-36的数
while(pnum[temp]==0)//如果此元素以被选过则重选
{
srand( (unsigned)time( NULL ) );
temp=rand();
temp=temp%36+1;
}
num[i]=temp; //选定一个号码
pnum[temp]=0; //给该元素置0,表示已被选过,如再有视为无效。
}
以上算法是www.vchelp.net 上的专栏作者雷神的彩票算法,他求的是7位数,
但我发现 当求超过10位数 时就会死机?
我发现问题的关键在于 While 循环,请教大家有没有好的算法 ?