天天看點

【原創】開源Math.NET基礎數學類庫使用(12)C#随機數擴充方法前言1.Random的擴充方法類2.RandomExtensions類的實作3.資源

  真正意義上的随機數(或者随機事件)在某次産生過程中是按照實驗過程中表現的分布機率随機産生的,其結果是不可預測的,是不可見的。而計算機中的随機函數是按照一定算法模拟産生的,其結果是确定的,是可見的。我們可以這樣認為這個可預見的結果其出現的機率是100%。是以用計算機随機函數所産生的“随機數”并不随機,是僞随機數。僞随機數的作用在開發中的使用非常常見,是以.net在system命名空間,提供了一個簡單的random随機數生成類型。但這個類型并不能滿足所有的需求,本節開始就将陸續介紹math.net中有關随機數的擴充以及其他僞随機生成算法編寫的随機數生成器。

  今天要介紹的是基于system.random的擴充方法。

  rondom擴充及随機數相關的類都在math.net的mathnet.numerics.random命名空間,今天要介紹的 randomextensions 類是 擴充random的靜态方法類,可以直接在system.random的對象上使用,相關功能介紹:

1.可以直接傳回填充0-1随機資料的數組,如nextdoubles方法; 2.可以傳回一個無限長度的ienumerable接口對象,一直疊代傳回double類型的随機數,是nextdoublesequence方法; 3.類似的還可以傳回其他類型的随機資料數組,如nextbytes,nextint32s等; 4.還可以單獨傳回int32類型和int64類型的随機數,其範圍在該類型的所有值域上,如nextfullrangeint32,nextfullrangeint64; 5.還可以單獨傳回int32類型和int64類型的随機數,其範圍是該類型所有值域上的非負數,如nextint64;

  作為靜态類,使用非常簡單,為了友善了解,我将注釋進行了部分翻譯,貼出該類的所有源碼,大家可以參考參考: 

  其使用非常簡單,這裡就不再舉例子。這種擴充大家也應該寫過,後面幾篇文章将介紹math.net中實作的其他算法的随機數發生器。請關注

繼續閱讀