程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#生成隨機數的辦法小結

C#生成隨機數的辦法小結

編輯:C#入門知識

C#生成隨機數的辦法小結。本站提示廣大學習愛好者:(C#生成隨機數的辦法小結)文章只能為提供參考,不一定能成為您想要的結果。以下是C#生成隨機數的辦法小結正文


本文實例總結了C#生成隨機數的辦法。分享給年夜家供年夜家參考。詳細剖析以下:

開端,很簡略地應用System.Random類來生成隨機數。很快,成績就來了,發明當random的生成距離小於1ms時,隨機數就反復了(僅限於每次都新建Random對象),由於新建random時刻是默許以以後時光作為隨機種子的。將random改成單例,反復數的概率小了,然則隨機數在一段時光後輪回了(偽隨機數嘛,沒方法,請求不了這麼多的)。

所以,特地在網上找了一些材料,並親身作了一些機能比擬,在此作些總結。

System.Random

這個是偽隨機數生成器

缺陷:生成出來的成果會輪回,且Random對象創立距離小於1ms的時刻發生成果會雷同;
長處:生成速度極快;
效力:高,統一個對象發生1,000,000個成果只須要22ms(不含對象創立時光)


System.Security.Cryptography.RandomNumberGenerator

這個是用於發生暗碼的平安隨機數生成器,發生出來的隨機數團圓度高,發生1,000,000個32位(8-byte)的隨機數無反復

缺陷:速度很慢,比較System.Random是兩個數目級的效力差距;
長處:平安度高,發生的成果可看做情況有關,並且可以填充當意長度的字節數組;
效力:低,統一個對象發生1,000,000個成果須要4221ms(不含對象創立時光)


System.Guid

這個是GUID(UUID)生成器,出來的是128-bit的字節數組,平日被表現為8-4-4-4-12的32個hex字符。

缺陷:生生長度必定,並且生成出來的成果能夠與情況相干,在高平安需求的情況不實用;
長處:有壯大的數學實際支撐,在每秒發生10億筆UUID的情形下,100年後只發生一次反復的機率是50%;
效力:中,發生1,000,000個成果須要255ms(包括Guid對象創立時光)


以上3個都可以看成隨機數發生器,但絕對於年夜部門的營業需求, GUID(UUID)曾經實用,並且其碰撞概率在統一個體系內簡直是弗成能的。所以在選擇發生器時GUID是一個不錯的選擇。

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved