什么是在ruby中生成正态分布随机数的代码?
(注意:我回答了我自己的问题,但我会等几天才接受是否有人有更好的答案.)
编辑:
搜索到这一点,我查看了两个搜索产生的SO上的所有页面:
+"正态分布"红宝石
和
+高斯+随机红宝石
在机器学习任务中.我们应该得到一组带有约束的随机wrt正态分布.我们可以获得正态分布数,np.random.normal()但它不提供任何绑定参数.我想知道怎么做?
我正在尝试使用boost :: normal_distribution来生成具有均值0和sigma 1的正态分布.
以下代码不起作用,因为某些值超过或超过-1和1(并且不应该).有人能指出我做错了什么吗?
#include <boost/random.hpp>
#include <boost/random/normal_distribution.hpp>
int main()
{
boost::mt19937 rng; // I don't seed it on purpouse (it's not relevant)
boost::normal_distribution<> nd(0.0, 1.0);
boost::variate_generator<boost::mt19937&,
boost::normal_distribution<> > var_nor(rng, nd);
int i = 0; for (; i < 10; ++i)
{
double d = var_nor();
std::cout << d << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
我的机器上的结果是:
0.213436
-0.49558
1.57538
-1.0592
1.83927
1.88577
0.604675
-0.365983
-0.578264
-0.634376
Run Code Online (Sandbox Code Playgroud)
如您所见,所有值都不在-1和1之间.
谢谢大家!
编辑:当你有最后期限并且在做练习之前避免研究理论时会发生这种情况.
random.normalvariate()和之间有什么区别random.gauss()?
它们采用相同的参数并返回相同的值,执行基本相同的功能.
我从之前的回答中了解到,这random.gauss()不是线程安全的,但这在这种情况下意味着什么?程序员为什么要关心这个?或者提出,为什么Python的'随机'中包含一个线程安全且非线程安全的版本?
有没有办法在不使用循环的情况下在R中生成具有正态分布随机值的数据集?每个条目将代表具有正态分布的独立随机变量.
当我调用rnorm单个值作为均值时,很明显会发生什么:从Normal(10,1)生成一个值.
y <- rnorm(20, mean=10, sd=1)
Run Code Online (Sandbox Code Playgroud)
但是,我看到传递给整个矢量的例子rnorm(或rcauchy等等); 在这种情况下,我不确定R机器到底做了什么.例如:
a = c(10,22,33,44,5,10,30,22,100,45,97)
y <- rnorm(a, mean=a, sd=1)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我想生成x和y坐标的相关数组,以便测试各种matplotlib绘图方法,但我在某处失败了,因为我不能numpy.random.multivariate_normal给我想要的样本.理想情况下,我希望我的x值介于-0.51和51.2之间,我的y值介于0.33和51.6之间(虽然我认为相等的范围可以,因为我之后可以约束该情节),但我不确定是什么意思(我应该使用0,0?)和协方差值来从函数中获取这些样本.
我正在尝试创建一维数组并使用随机数生成器(高斯生成器生成随机数,方法为70,标准差为10)来填充数组,其中包含0到100之间的至少100个数字.
我将如何在C++中执行此操作?
我想在MATLAB中重现下图:

有两类具有X和Y坐标的点.我想用一个带有一个标准偏差参数的椭圆围绕每个类,它决定了椭圆沿轴线走多远.
这个图是用另一个软件创建的,我不太清楚它是如何计算椭圆的.
这是我用于此图的数据.第一列是第二列 - 第二列 - 第三列 - 第一列.我可以gscatter用来绘制点本身.
A = [
0 0.89287 1.54987
0 0.69933 1.81970
0 0.84022 1.28598
0 0.79523 1.16012
0 0.61266 1.12835
0 0.39950 0.37942
0 0.54807 1.66173
0 0.50882 1.43175
0 0.68840 1.58589
0 0.59572 1.29311
1 1.00787 1.09905
1 1.23724 0.98834
1 1.02175 0.67245
1 0.88458 0.36003
1 0.66582 1.22097
1 1.24408 0.59735
1 1.03421 0.88595
1 1.66279 0.84183
];
gscatter(A(:,2),A(:,3),A(:,1))
Run Code Online (Sandbox Code Playgroud)
仅供参考,这是关于如何绘制椭圆的SO问题.所以,我们只需知道绘制它的所有参数.
更新:
我同意可以将中心计算为X和Y坐标的平均值.可能我必须PRINCOMP对每个类使用主成分分析()来确定角度和形状.仍然在想...
我使用scipy.optimize.fmin_l_bfgs_b来解决高斯混合问题.混合分布的均值通过回归建模,其权重必须使用EM算法进行优化.
sigma_sp_new, func_val, info_dict = fmin_l_bfgs_b(func_to_minimize, self.sigma_vector[si][pj],
args=(self.w_vectors[si][pj], Y, X, E_step_results[si][pj]),
approx_grad=True, bounds=[(1e-8, 0.5)], factr=1e02, pgtol=1e-05, epsilon=1e-08)
Run Code Online (Sandbox Code Playgroud)
但有时我在信息词典中收到警告"ABNORMAL_TERMINATION_IN_LNSRCH":
func_to_minimize value = 1.14462324063e-07
information dictionary: {'task': b'ABNORMAL_TERMINATION_IN_LNSRCH', 'funcalls': 147, 'grad': array([ 1.77635684e-05, 2.87769808e-05, 3.51718654e-05,
6.75015599e-06, -4.97379915e-06, -1.06581410e-06]), 'nit': 0, 'warnflag': 2}
RUNNING THE L-BFGS-B CODE
* * *
Machine precision = 2.220D-16
N = 6 M = 10
This problem is unconstrained.
At X0 0 variables are exactly at the bounds
At iterate 0 f= 1.14462D-07 |proj g|= 3.51719D-05
* * …Run Code Online (Sandbox Code Playgroud) statistics optimization normal-distribution machine-learning gradient-descent
random ×6
python ×3
statistics ×3
c++ ×2
gaussian ×2
numpy ×2
r ×2
boost ×1
correlation ×1
ellipse ×1
matlab ×1
optimization ×1
plot ×1
ruby ×1
vector ×1