我想用随机的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)
这不是随意选择的.我可以拥有更高效的随机功能吗?
你需要有一个范围,否则你将用无限数量做什么?
没有参数 - rand()将返回0到RAND_MAX(通常为32765)之间的整数.
如果你需要一个大于这个的数字,你可以组合两个rand()数字.关于组合随机数的最佳方法存在复杂的统计论据,因此您不会改变随机性,但我认为您不必担心这一点.
编辑:因为RAND_MAX(在这种情况下)是一个15位数,为了得到一个30比特的范围,将两个rand()加在一起,再次得到一个32比特的范围 - 它可以环绕但不会改变随机性(显着).