gpt4 book ai didi

c++ - 在 C++ 中实现正态分布的制服比率

转载 作者:太空狗 更新时间:2023-10-29 23:18:44 25 4
gpt4 key购买 nike

我知道这可以通过定义泪滴形状并接受落在该区域内的点(来自统一生成器)来完成。

我试图在 C++ 中通过生成两个统一的随机数 x 和 y 来定位点 (x,y),然后检查该点是否落在区域内。

我的代码本身没有问题,但是我的逻辑这里有缺陷吗?我还没有找到合适的图形方式来检查这是否是真正的正态分布。

这是应该工作的代码:

typedef unsigned long long int Ullong;
typedef double Doub;

struct Normaldev : Ran {
Doub mu,sig;

Normaldev (Doub mmu, Doub ssig, Ullong i)
: Ran (i), mu(mmu), sig(ssig){}

Doub dev() {

Doub u, v, x, y, q;
do {
u=Doub();
v=1.7156*(Doub()-0.5);
x=u-0.449871;
y=abs(v)+0.386595;
q=x*x+y*(0.19600*y-0.25472*x);
} while(q>0.27597 && (q>0.27846 || v*v>-4*log(u)*u*u));

return mu+sig*v/u;
}
};

我以我对 C++ 的基本知识尽可能多地更改了数值食谱书中建议的代码,但 Ran 到底应该是什么?

最佳答案

I changed the suggested code in the Numerical Recipes book as much as I could with my rudimentary knowledge of C++, but what exactly is Ran supposed to be?

Ran 是 NormalDev 的父类。它未在您提供的代码中定义。根据代码,它似乎是一个非常通用的随机数类,在其构造函数中采用 unsigned long long int 种子。

关于c++ - 在 C++ 中实现正态分布的制服比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13001485/

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