相关疑难解决方法(0)

将均匀分布转换为正态分布

如何将均匀分布(大多数随机数生成器产生,例如介于0.0和1.0之间)转换为正态分布?如果我想要选择的平均值和标准偏差怎么办?

language-agnostic random algorithm normal-distribution

98
推荐指数
6
解决办法
10万
查看次数

基于正态分布的范围内的随机数

我想生成一个范围(n到m,例如100到150)的随机数,但是我希望结果不是纯随机的,而是基于正态分布.

我的意思是,通常我希望数字"聚集"在125左右.

我发现这个随机数字包似乎有很多我需要的东西:http://codeproject.com/KB/recipes/Random.aspx

它支持各种随机生成器(包括mersiene twister),并可以将生成器应用于分发.

但我很困惑,如果我使用正态分布生成器,随机数从大约-6到+8(显然真正的范围是float.min到float.max).

如何扩展到我要求的范围?

random normal-distribution gaussian

34
推荐指数
2
解决办法
2万
查看次数

C++:生成高斯分布

我想知道在C++标准库中是否有任何高斯分布数生成器,或者是否有任何代码片段可以通过.

提前致谢.

c++ normal-distribution gaussian

8
推荐指数
3
解决办法
1万
查看次数

在C++中使用高斯概率密度函数

首先,这是pdf高斯函数的正确C++表示吗?

float pdf_gaussian = ( 1 / ( s * sqrt(2*M_PI) ) ) * exp( -0.5 * pow( (x-m)/s, 2.0 ) );
Run Code Online (Sandbox Code Playgroud)

第二,我们做这样的事情是否有意义?

if(pdf_gaussian < uniform_random())
   do something
else
   do other thing
Run Code Online (Sandbox Code Playgroud)

编辑:你想要实现的目标的一个例子:

假设我有一个名为Y1的数据.然后一个名为Xi的新数据到达.我想知道是否应该将Xi与Y1相关联,或者我是否应该将Xi保留为将被称为Y2的新数据数据.这基于新数据Xi与现有数据Y1之间的距离.如果Xi与Y1"相距",那么Xi将不与Y1相关联,否则如果它"不远",则它将与Y1相关联.现在我想使用基于Y和过去已经与Y关联的数据之间的距离的平均值和偏差的高斯概率来模拟这个"远"或"不远".

c++ distribution normal-distribution probability gaussian

8
推荐指数
2
解决办法
2万
查看次数

在 Java 中生成遵循正态分布的数字

我想(随机)生成数字,使数字遵循给定均值和方差的正态分布。我怎样才能实现这个目标?

如果能在Java的上下文中给出这个就更好了。人们可能会在这些答案中寻求帮助:但它们并不精确。 在 C/C++ 中生成遵循正态分布的随机数

java random algorithm normal-distribution

6
推荐指数
1
解决办法
1万
查看次数

使用单独的Boost库进行编译,无需安装Boost

我正在实现一些我希望尽可能便携的C++代码.我想避免依赖需要root访问权限的库来安装.此外,我更愿意避免在我的存储库中保留大型库的副本,而且我也不希望不对用户级别的库进行安装(仅仅因为我必须在多台计算机上手动安装它们.)

我想normal_distribution在我的项目中使用Boost 的功能.我知道安装Boost的典型方法需要一个sudo apt-get或一个sudo yum类型的命令,但我没有在运行此代码的系统上具有root访问权限.为了解决这个问题,我想知道是否可以在我的代码目录中放置Boost的normal_distribution.cppnormal_distribution.hpp的副本,并使用这些文件编译/链接我的代码.这会有用吗?

读者可能想知道为什么我不只是normal_distribution在TR1或C++ 11中使用该实现.答案是我需要保持与仍然运行g ++ 4.1.x的大学管理集群的兼容性,这至少在我的经验中是不支持的<TR1/random>.

c++ installation portability boost c++11

5
推荐指数
1
解决办法
2248
查看次数

在C中生成正态分布随机值的算法?

可能重复:
将均匀分布转换为正态分布

你好.

我想知道在C中实现的任何算法,它可以取0到1之间的随机值,平均值和标准差,然后返回正态分布的结果.

我现在没有足够的脑力来为自己解决这个问题.

我在互联网上找不到任何有用的东西.

谢谢.

c random algorithm statistics

2
推荐指数
2
解决办法
1812
查看次数

有没有办法使用 C++ 中的高斯正态分布创建“更真实”的随机结果?

我在堆栈溢出中搜索了该函数的一些描述、解释和片段std::normal_distribution<> variable(mean, stddev),并发现了一个特别的实例(如下所列),它对我的​​目的非常有效,即能够创建和容纳一个随机数根据给定均值和标准差的正态分布。

#include <random>
...
std::mt19937 generator;
double mean = 100.0, stddev  = 15.0, example;
std::normal_distribution<double> normal(mean, stddev);
example = normal(generator);
cout << "Normal: " << example << endl;
Run Code Online (Sandbox Code Playgroud)

信用 - /sf/answers/838458561/

然而,我遇到的一个问题是,随着时间的推移,这段代码的结果变得相当重复和可预测。例如,我反复使用平均值 100 和标准差 15,当运行超过 1000 时,几乎可以肯定的是,至少在我的系统上,一致地生成大约 52.246 和 156.86 的一个实例。

有没有办法操纵这个代码片段,或者如果我理解正确的话,种子,以便它产生每次都足够不同的各种结果,同时仍然遵守正态分布?

由于我对这个函数还是新手,我尝试用std::default_random_engine generator;代替std::mt19937 generator,虽然它产生了不同的结果,但随着时间的推移,它也有类似的重复问题。

c++ random normal-distribution gaussian

2
推荐指数
1
解决办法
113
查看次数

随机数发生器解释

from random import *
def main():
    t = 0
    for i in range(1000):  # thousand
        t += random()
    print(t/1000)
main()
Run Code Online (Sandbox Code Playgroud)

我正在查看我教授给我的示例程序的源代码,我遇到了这个RNG.谁能解释这个RNG的工作原理?

python random for-loop operators python-3.x

0
推荐指数
1
解决办法
334
查看次数