国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

C#中獲取、生 成隨機數的三種方法

2019-11-02 14:50:47
字體:
來源:轉載
供稿:網友

   這篇文章主要介紹了C#中獲取、生成隨機數的三種方法,本文講解了Random 類生成法、Guid 類生成法以及RNGCryptoServiceProvider 類生成法,需要的朋友可以參考下

  隨機數的定義為:產生的所有數字毫無關系.

  在實際應用中很多地方會用到隨機數,比如需要生成唯一的訂單號.

  在C#中獲取隨機數有三種方法:

  一.Random 類

  Random類默認的無參構造函數可以根據當前系統時鐘為種子,進行一系列算法得出要求范圍內的偽隨機數.

   代碼如下:

  Random rd = new Random();

  int i = rd.Next();

  這種隨機數可以達到一些要求較低的目標,但是如果在高并發的情況下,Random類所取到的系統時鐘種子接近甚至完全一樣,就很有可能出現重復,這里用循環來舉例

   代碼如下:

  for (int i = 0; i < 10; i++)

  {

  Random rd = new Random();  //無參即為使用系統時鐘為種子

  Console.WriteLine(rd.Next().ToString());

  }

  這個例子會輸出10個相同的"隨機數".

  突顯出的問題:因為Random進行偽隨機數的算法是固定的,所以根據同一個種子計算出的數字必然是一樣的.而以當代計算機的運行速度,該循環幾乎是在瞬間完成的,種子一致,所以會出現10次循環輸出同一隨機數的情況.

  二.Guid 類

  System.Guid

  GUID (Globally Unique Identifier) 全球唯一標識符

  GUID的計算使用到了很多在本機可取到的數字,如硬件的ID碼,當前時間等.所計算出的128位整數(16字節)可以接近唯一的輸出.

   代碼如下:

  Console.WriteLine(Guid.NewGuid().ToString());

  計算結果是xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx結構的16進制數字.當然這個格式也是可以更改的.

  三.RNGCryptoServiceProvider 類

  System.Security.Cryptography.RNGCryptoServiceProvider

  RNGCryptoServiceProvider 使用加密服務提供程序 (CSP) 提供的實現來實現加密隨機數生成器 (RNG)

   代碼如下:

  RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider();

  byte[] byteCsp = new byte[10];

  csp.GetBytes(byteCsp);

  Console.WriteLine(BitConverter.ToString(byteCsp));

  因該類使用更嚴密的算法.所以即使如下放在循環中,所計算出的隨機數也是不同的.

  代碼如下:

  for (int i = 0; i < 10; i++)

  {

  RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider();

  byte[] byteCsp = new byte[10];

  csp.GetBytes(byteCsp);

  Console.WriteLine(BitConverter.ToString(byteCsp));

  }

  但是RNGCryptoServi

  Membership.GeneratePassword()

  Membership是一個方便快捷的進行角色權限管理的類,偶然發現一個很有意思的方法,沒研究過是如何實現的

  代碼如下:

  public static string GeneratePassword(int length, int numberOfNonAlphanumericCharacters);

  //

  // 摘要:

  // 生成指定長度的隨機密碼。

  //

  // 參數:

  // numberOfNonAlphanumericCharacters:

  // 生成的密碼中的標點字符數。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵台县| 扎赉特旗| 阿巴嘎旗| 阿鲁科尔沁旗| 正安县| 尉犁县| 贵港市| 松溪县| 黑龙江省| 奉贤区| 铜梁县| 盐池县| 台安县| 平陆县| 宁德市| 凌海市| 米林县| 江永县| 东港市| 汤阴县| 海城市| 济阳县| 中超| 金溪县| 肃宁县| 洪泽县| 雷州市| 姚安县| 玛纳斯县| 光泽县| 迁安市| 武乡县| 二连浩特市| 横峰县| 八宿县| 南宁市| 噶尔县| 洪雅县| 金塔县| 遂溪县| 邵武市|