C# 如何生成指数分布随机数的向量

C# 如何生成指数分布随机数的向量,c#,exponential,mathnet-numerics,exponential-distribution,C#,Exponential,Mathnet Numerics,Exponential Distribution,我试图生成指数分布的随机数。我找到了Math.NET NuGet包。看起来不错,但我不知道如何生成此类数据的向量 我已经包括了参考资料,并尝试了类似的方法(受官方网站启发)-我知道制服不会产生指数值 Generate.Uniform(100); 但是我得到:“生成在当前上下文中不存在。” 我也尝试过: Random rnd= new Random(); double[] samples; double lambda = 0.1; Exponential.Samples(rnd, sa

我试图生成指数分布的随机数。我找到了Math.NET NuGet包。看起来不错,但我不知道如何生成此类数据的向量

我已经包括了参考资料,并尝试了类似的方法(受官方网站启发)-我知道制服不会产生指数值

 Generate.Uniform(100);
但是我得到:“生成在当前上下文中不存在。”

我也尝试过:

 Random rnd= new Random();
 double[] samples;
 double lambda = 0.1;
 Exponential.Samples(rnd, samples,lambda); 

这里,我在最后一行得到了“Invalid expression term')”和“expected”。

Samples函数希望数组已经分配,因此可以重复使用它。它将填充整个数组

Random rnd = new Random();
double lambda = 0.1;

double[] samples = new double[200];
Exponential.Samples(rnd, samples, lambda);
但是,您要求的是向量,而不是数组:

Vector<double> v = CreateVector.Random<double>(200, new Exponential(lambda, rnd));
Vector v=CreateVector.Random(200,新指数(lambda,rnd));

您得到的错误是一个与Math.NET Numerics无关的C#语法错误(并且在您实际发布的代码中不存在)。对于
Generate
,您需要打开
MathNet.Numerics
命名空间。

函数要求数组已经分配,因此您可以重复使用它。它将填充整个数组

Random rnd = new Random();
double lambda = 0.1;

double[] samples = new double[200];
Exponential.Samples(rnd, samples, lambda);
但是,您要求的是向量,而不是数组:

Vector<double> v = CreateVector.Random<double>(200, new Exponential(lambda, rnd));
Vector v=CreateVector.Random(200,新指数(lambda,rnd));

您得到的错误是一个与Math.NET Numerics无关的C#语法错误(并且在您实际发布的代码中不存在)。对于
Generate
您需要打开
MathNet.Numerics
名称空间。

您可以不使用Math.Net生成它:因此,基本上,您会得到一个编译器错误?您可以使用Infer.Net包。您可以不使用Math.Net生成它:因此,基本上,您会得到一个编译器错误?您可以使用Infer.Net包。谢谢:)。还有一个问题。如何设置生成数字的范围。对于0到1之间的样本,均匀分布:
ContinuousUniform.样本(rnd,样本,0.0,1.0)或者你是指指数分布,但过滤到0.0-1.0?是的,我的意思是指指数分布在0.0-1.0之间。假设给定的lambda通常会产生超出范围的数字,你可以按照
index.Samples(rnd,lambda)来做一些事情。其中(x=>x谢谢:)。还有一个问题。如何设置生成数字的范围。对于0到1之间的样本,均匀分布:
ContinuousUniform.样本(rnd,样本,0.0,1.0)或者你的意思是指数分布,但过滤到0.0-1.0?是的,我的意思是指数分布在0.0-1.0之间。假设给定的lambda通常会产生超出范围的数字,你可以按照
index.Samples(rnd,lambda)的方式进行操作。其中(x=>x