天天看點

開源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中實作的其他算法的随機數發生器。請關注

繼續閱讀