在C中生成随机整数,不在范围内

D.L*_*.L. 2 c random

我想用随机的x和y坐标生成100个节点.但我不想指定任何范围.像rand(100)将只生成1到100之间的数字.但是我希望数字分布在一个大的区域,我希望它们是随机的.我如何使用C实现它?我试过了:

 int gen_rand_position(void)  
{  
     int i,j,a[100],b[100];  
    for(i=0,j=0;i<100,j<100;i++,j++)  
{
    x=rand();  
        y=rand();  
    a[i]=x;  
    b[j]=y;  
}  
}
Run Code Online (Sandbox Code Playgroud)

这不是随意选择的.我可以拥有更高效的随机功能吗?

Mar*_*ett 5

你需要有一个范围,否则你将用无限数量做什么?

没有参数 - rand()将返回0到RAND_MAX(通常为32765)之间的整数.

如果你需要一个大于这个的数字,你可以组合两个rand()数字.关于组合随机数的最佳方法存在复杂的统计论据,因此您不会改变随机性,但我认为您不必担心这一点.

编辑:因为RAND_MAX(在这种情况下)是一个15位数,为了得到一个30比特的范围,将两个rand()加在一起,再次得到一个32比特的范围 - 它可以环绕但不会改变随机性(显着).