C++ 中曲线下的 2D 随机点
2D random points under a curve in c++
我想在 x 轴和曲线之间选择 50 个随机点 y=sin (x)+2(例如)。我希望随机点均匀分布在这个 2D 区域中。我确实喜欢这个:
using namespace std;
double randnum (double aa, double bb) //defining a function to create random numbers
{
static std::default_random_engine generator;
std::uniform_real_distribution<double> distribution (aa,bb);
return distribution(generator);
}
for(int i = 0; i < 50; i++)
{
x[i] = randnum(0,2 * M_PIl);
y[i] = randnum(0,sin(x[i])+2);
}
但这是不正确的,因为它在曲线更接近 x 轴的区域中给出的点密度更大。如何在域中选择密度相等的点?
不要在函数的下半部分挤压相同数量的点数/概率。
而是在 x 范围内的矩形区域中创建随机点,直至最大 y。
但忽略那些在 y 轴上太高的内容。
即用这个替换你的循环:
for(int i = 0; i < 50; i++)
{
do
{ x[i] = randnum(0,2 * M_PIl);
y[i] = randnum(0,3); // three is max-y, but not really relevant
} while (y[i]>=sin(x[i])+2);
}
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 2D数组来自文本输入,中间有空格
- 将值指定给向量(2D)的向量中的某个位置
- 为什么 Serial.println(<char[]>);返回随机字符?
- 字符串-C++后显示的随机字符
- 如何使用用户输入在C++中正确填充2D数组
- 循环中的随机函数
- 在c++构造函数中使用随机字符串生成器
- 按列随机播放 2D 矢量
- 为什么我的 2d 数组的第二行从 RAM 中获取随机值?
- 分割故障:从2D矢量中随机删除元素
- 使用随机值初始化 2D 向量
- C 2D char阵列有时会在随机位置复制数据
- 在C++中按行随机播放 2D 数组
- C++ 中曲线下的 2D 随机点
- 在数组中随机生成固定范围的数字,在该 2D 数组中没有重复行
- 将随机值分配给2d数组c++
- 将多维数组随机化(随机播放)为另一个 2D 数组
- 如何将随机字符串从2d数组添加到1d数组[c++]
- 生成一个随机的2D数组