gpt4 book ai didi

c - C中生成随机整数,不在一个范围内

转载 作者:行者123 更新时间:2023-12-04 12:34:52 26 4
gpt4 key购买 nike

我想生成 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com