我想得到N个随机数,它们的总和是一个值.
例如,假设我想要5个随机数,它们的和为1
那么,一个有效的可能性是:
0.2 0.2 0.2 0.2 0.2
Run Code Online (Sandbox Code Playgroud)
其他可能性是:
0.8 0.1 0.03 0.03 0.04
Run Code Online (Sandbox Code Playgroud)
等等.我需要这个来创建模糊C均值的所有物矩阵.
我希望能够生成一个随机均匀的粒子位置样本,该样本落在球形体积内.
下图(http://nojhan.free.fr/metah/提供)显示了我要找的内容.这是穿过球体的切片,显示了点的均匀分布:
这就是我目前得到的:
由于球面和笛卡尔坐标之间的转换,您可以看到中心有一组点.
我使用的代码是:
def new_positions_spherical_coordinates(self):
radius = numpy.random.uniform(0.0,1.0, (self.number_of_particles,1))
theta = numpy.random.uniform(0.,1.,(self.number_of_particles,1))*pi
phi = numpy.arccos(1-2*numpy.random.uniform(0.0,1.,(self.number_of_particles,1)))
x = radius * numpy.sin( theta ) * numpy.cos( phi )
y = radius * numpy.sin( theta ) * numpy.sin( phi )
z = radius * numpy.cos( theta )
return (x,y,z)
Run Code Online (Sandbox Code Playgroud)
下面是一些MATLAB代码,据说可以创建一个统一的球形样本,类似于http://nojhan.free.fr/metah给出的等式.我似乎无法破译它或理解他们做了什么.
function X = randsphere(m,n,r)
% This function returns an m by n array, X, in which
% each of the m rows has the n Cartesian coordinates …
Run Code Online (Sandbox Code Playgroud) 我正在为C++命令行Linux应用程序编写一些测试.我想生成一堆具有幂律/长尾分布的整数.意思是,我经常得到一些数字,但大多数都是相对不频繁的.
理想情况下,我可以使用rand()或其中一个stdlib随机函数.如果没有,一个易于使用的C/C++块将是伟大的.
谢谢!
我知道Knuth用于生成随机泊松分布数的算法(在Java下面)但是我如何将其转换为generateEvent()
随机调用方法?
int poissonRandomNumber(int lambda) {
double L = Math.exp(-lambda);
int k = 0;
double p = 1;
do {
k = k + 1;
double u = Math.random();
p = p * u;
} while (p > L);
return k - 1;
}
Run Code Online (Sandbox Code Playgroud) 我实现了这个函数来生成一个泊松随机变量
typedef long unsigned int luint;
luint poisson(luint lambda) {
double L = exp(-double(lambda));
luint k = 0;
double p = 1;
do {
k++;
p *= mrand.rand();
} while( p > L);
return (k-1);
}
Run Code Online (Sandbox Code Playgroud)
其中mrand是MersenneTwister随机数生成器.我发现,当我增加lambda时,预期的分布将是错误的,其平均值在750左右饱和.是由于数值近似还是我犯了什么错误?
嘿嘿,
我正在尝试使用指数/负指数分布生成 0.0 和 1.0 之间的随机数。有一篇文章,它告诉你必须得到“分位数函数”。但是结果还是大于1.0。所以我需要以某种方式缩放我的方程。
我的目标是在一个范围内生成一个随机数,例如更高/更低的值具有更高的概率。(分布应该是可扩展的)
相关问题(不要将结果截断为 [0,1]):
我需要找到概率指数分布的公式,但我不知道如何找到它:(这个公式必须具有强大的统计属性(它不能丢弃随机的任何结果,以保持随机实例的不受限制的搜索)
我试图找到公式,这将在这样的方法中工作:
rand.getNextDuobleExpDistrib();
Run Code Online (Sandbox Code Playgroud)
我现在有这个代码,但根据"输入分析器",它无法正常工作
public double getNext() {
return -lampda * Math.log(rand.nextDouble());
}
Run Code Online (Sandbox Code Playgroud) random ×6
java ×3
c++ ×2
math ×2
poisson ×2
probability ×2
distribution ×1
events ×1
exponential ×1
geometry ×1
knuth ×1
matlab ×1
power-law ×1
python ×1
simulation ×1
sum ×1