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

标签 c random

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

相关文章:

python - 使用给定范围内的随机数初始化矩阵 - python

c - 线程、事件循环和大量的连接和并发

javascript - 如何像彩票一样抽出总是不同的数字?

python - 从python中的列表中选择数字

将 char 转换为 unsigned int - C

c++ - c++11 中的 <random> 库是可移植的吗?

java - 保持方法之间的随机数相同

c - 我如何在多个驱动程序中使用一个函数?

c - 如何使用read()读取数据直到文件末尾?

当前的标准 C 编译器?