|
就这个而言,远没有vb方便快捷!
vc怎样产生0-10000000的随机数?有谁有现成的算法。
网上找了一个,好像并不行!
/*
* a[]: 放置随机数的起始地址
* size:要产生的随机数的个数(数组大小)
* start:要产生的随机数n的范围,大于等于start
* end: 要产生的随机数n的范围,小于end
*/
void rand_gen(int a[], int size, int start, int end )
{
int n,i,k ;
int ok = 1;
for( i = 0; i<=size-1; i++ )
{
//如果n与a[0]到a[i-1]的任何值有重复,
//就一直产生随机数,直到不重复
while(1)
{
n = rand() % (end-start) + start ;
ok = 1; //假设不重复
//从a[0]到a[i-1],检测是否有重复
for(k=0; k<= i-1; k++ )
{
if( a[k] == n )
{
ok = 0;
break; //检测到重复
}
}
if( ok )
{
a[i] = n; //没有重复,把n放入数组
break ;
}
}//退出do while,继续第i+1个随机数
}
}
|
|