C# 如何生成指数分布随机数的向量
我试图生成指数分布的随机数。我找到了Math.NET NuGet包。看起来不错,但我不知道如何生成此类数据的向量 我已经包括了参考资料,并尝试了类似的方法(受官方网站启发)-我知道制服不会产生指数值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
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