如何从Matlab中的函数exprnd()在同一分布中获取C#中的数字?Matlab exprnd(a,b,c)模拟C#?
回答
试着这么做:
static readonly Random randomNumberGenerator = new Random();
public static double ExpRnd(double mu)
{
return -Math.Log(randomNumberGenerator.NextDouble()) * mu;
}
如果你想m
×n
矩阵,使用
public static double[,] ExpRnd(double mu, int m, int n)
{
var arr = new double[m, n];
for (int i = 0; i < m; ++i)
{
for (int j = 0; j < n; ++j)
arr[i, j] = ExpRnd(mu);
}
return arr;
}
注:System.Random
类是不线程安全的。如果您有多个线程调用ExpRnd
以上,则必须更加小心。
您可以使用诸如meta.numerics
一些外部信号处理库在Meta.Numerics.Statistics.Distributions
命名空间,看看ExponentialDistribution
级及相应的GetRandomValue(Random)
方法。
本博客文章可以帮助你:
http://ericlippert.com/2012/02/21/generating-random-non-uniform-data/
如果你知道 - 或者可以算出来 - 分布的你想那么位数功能你可以改变(大致)均匀您已经拥有的分销已经进入给定的分销。
正如我在博客文章中所描述的,分位数函数是累积分布的倒数,累积分布是分布下的面积。由于您想要的分配是e -x应该很容易计算出积分和逆。
这也是我的答案的工作原理。 [Wikipedia](http://en.wikipedia.org/wiki/Exponential_distribution#Generating_exponential_variates)给出分位数函数为$ F^{ - 1}(p)= - \ ln(1-p)\ mu $,并注意到“一减”部分可以省略。 –
@JeppeStigNielsen:是的,但是你错过了做所有有趣的微积分,如果你只是*看它*。 :-) –
- 1. 从{a-b,b-c,c-a}改变为{(a,b),(b,c),(c,a)}?
- 2. 简化布尔表达式(a *'b *'c)+('a *'b * c)+('a * b *'c)+(a *'b * c)
- 3. PHP变换阵列'a','b','c'到'a/b/c','a/b','a'
- 4. 发现((A + B)/ C)模m
- 5. C++:a-power b模数k
- 6. 为什么var c =“a”|| “b”返回c =“a”和var c =“a”&&“b”返回c =“b”?
- 7. 逻辑:是(A &&!(B || C))|| (B || C)与(A || B || C)相同?
- 8. 如何写A :: B :: C => D给定A :: B :: C和(A,B,C)=> D?
- 9. 我想从['a','b','c']将python列表变成['a','a','b',b','c','c']
- 10. 排序字符串数组以 “A A B B C C” 用C
- 11. C#数组[a,b,c]与数组[a] [b] [c]?
- 12. Javascript语法:a!= b &&(c = b)
- 13. 简化(a + b)XOR(c + b)
- 14. Matlab,operator A \ B
- 15. Java A-> B-> C so A - > C?
- 16. Regular grammar - a * b * c *
- 17. C/C++:A(* eval(A(* function)(B),B b))(){...}可能吗? (可能预C++ 11)
- 18. 如果A和B是单子,如何将A [B [C]]转换为B [A [C]]?
- 19. 如果A.B = C,给定A,B,C是矩阵,那么如何使用Matlab从B和C计算A?
- 20. a =“hello”,b =“bye”,c = a * b然后打印c?
- 21. 我该如何说服coq(A/\ B)/ \ C == A/\ B/\ C?
- 22. 将['a','b','c']“转换为['a','b','c']:Javascript
- 23. SQL条件:(A = B AND C LIKE%D%)或(A LIKE%B%和C = D)
- 24. 从挤压元组(A,(B,C))至(A,B,C)中fsharp
- 25. SQL INSERT INTO表(a,b,c)VALUES(:a,:b,:c,SELECT ...)
- 26. 字符串比较像a,b,c与c,b,a
- 27. .htaccess的规则/ A/B/C到A = B =&C =
- 28. 红宝石。为什么arr =%w {'a','b','c'} => [“'a',”,“'b',”,“'c'”]
- 29. “a,b,c”.split(“,”)优于[“a”,“b”,“c”]的优点是什么?
- 30. JavaScript:将[a,b,c]转换为[a] [b] [c]
你可以从C#调用matlab函数# 这里阅读http://stackoverflow.com/questions/5901664/calling-a-matlab-function-from-c-sharp或这里http://www.mathworks.com/ help/matlab/matlab_external/call-matlab-function-from-ac-client.html – Elior