我想生成 100 个具有随机 x 和 y 坐标的节点。但我不想指定任何范围。就像 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;
}
}
这不是随机选择。我可以有更高效的随机函数吗?
最佳答案
你需要有一个范围,否则你打算用无限的数字做什么?
没有参数 - rand() 将返回 0 和 RAND_MAX 之间的整数(通常为 32765)。
如果您需要比这更大的数字,您可以组合两个 rand() 数字。关于组合随机数的最佳方法存在复杂的统计争论,因此您不会改变随机性,但我认为您不必为此担心。
编辑:因为 RAND_MAX 是(在这种情况下)一个 15 位数字,要获得 30 位范围将两个 rand() 相乘,再次获得 32 位范围相乘 - 它可能会回绕但不会改变随机性(显着)。
关于c - C中生成随机整数,不在一个范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13420950/