我试图生成一个随机数,但它不应该是一个特定的数字.所以我传递的数字不应该是随机数和必须为函数生成的范围,如果生成的随机数是不应该生成的数字,我重新调用该函数,所以这个花了很长时间,导致我的计划终止.我使用下面的代码,让我知道如何有效地生成随机数而无需等待很长时间甚至没有重新调用该函数.
这里rank1是传递给它的数字,不应该生成它,size1是数字,表示最大可接受值的范围
int rgenerator(int rank1, int size1)
{
int iseed, k;
time_t seconds;
time(&seconds);
iseed=(unsigned int) seconds;
srand(iseed);
k=rand()%size1;
if(k!=rank1)
return k;
else
rgenerator(rank1,size1);
}
Run Code Online (Sandbox Code Playgroud)
该标准的原则同样适用在这里:你怎么称呼srand恰好一次初始化过程中,永不再调用它.
至于不生成rank1,我想我只是将范围缩小1,然后如果你得到的结果是> = to rank1,加一个来创建一个"洞" rank1.
| 归档时间: |
|
| 查看次数: |
557 次 |
| 最近记录: |