x = 0.5 + 0.1*randn()
从平均值0.5和标准差0.1的正态分布中得出伪随机数。
既然如此,下面的Matlab代码是否等价于从一个在0处截断的正态分布在1处进行采样?
while x <=0 || x > 1
x = 0.5 + 0.1*randn();
end
使用MATLAB的概率分布对象使得从截断分布中进行采样变得非常容易。
您可以使用makedist()
和truncate()
函数定义对象,然后修改(截断它)为random()
函数准备对象,该函数允许从它生成随机变量。
% MATLAB R2017a
pd = makedist('Normal',0.5,0.1) % Normal(mu,sigma)
pdt = truncate(pd,0,1) % truncated to interval (0,1)
sample = random(pdt,numRows,numCols) % Sample from distribution `pdt`
一旦创建了对象(这里是pdt
,即pd
的截断版本),您就可以在各种函数调用中使用它。
figure, hold on
h = histogram(cr,'Normalization','pdf','DisplayName','@Luis Mendo samples');
X = 0:.01:1;
p = plot(X,pdf(pdt,X),'b-','DisplayName','Theoretical (w/ truncation)');
我想生成一个截断的正态分布,其中任何一个R中都有已知的参数。注意,我不是在寻找伪随机数生成器。 假设I有一个均值为5,标准差为1的正态分布。我能画出一个截断正态分布的值吗,在点1和点10截断?
我试着增加平局的数量--仍然导致sd在96左右。
本文向大家介绍基于JavaScript伪随机正态分布代码实例,包括了基于JavaScript伪随机正态分布代码实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了基于JavaScript伪随机正态分布代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在游戏开发中经常遇到随机奖励的情况,一般会采取先生成数组,再一个一个取的方式发随
我将需要初始化一个'n'数量的类,将有一个随机值附加到他们从1到100。 我知道如何创建一个介于1和100之间的随机值,但我如何使所有的值都落在一个正态分布模式?
例如,随机函数产生120个数字(0或1),这些相加值的平均值必须接近60。
问题内容: 我正在尝试构造一个正则表达式(用于Java)以截断小数点后的零。例如 50.000→50 50.500→50.5 50.0500→50.05 -5→-5 50→50 5.5→5.5 想法是以最紧凑的形式表示实数(或整数)。 这是我构造的: 我用来捕获截断的数字字符串。 上面的模式的问题是50被截断为5。我需要某种方式来表示必须遵循(小数点)。 我尝试过使用负数落后,但没有任何匹配。 问