如何從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