C#中獲得、生成隨機數的三種辦法。本站提示廣大學習愛好者:(C#中獲得、生成隨機數的三種辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中獲得、生成隨機數的三種辦法正文
隨機數的界說為:發生的一切數字毫有關系.
在現實運用中許多處所會用到隨機數,好比須要生成獨一的定單號.
在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));
}
然則RNGCryptoServiceProvider的盤算較為繁瑣,在輪回中應用會消費形成年夜量的體系資本開支,應用時需留意.''
Membership.GeneratePassword()
Membership是一個便利快捷的停止腳色權限治理的類,有時發明一個很成心思的辦法,沒研討過是若何完成的
public static string GeneratePassword(int length, int numberOfNonAlphanumericCharacters);
//
// 摘要:
// 生成指定長度的隨秘密碼。
//
// 參數:
// numberOfNonAlphanumericCharacters:
// 生成的暗碼中的標點字符數。
//
// length:
// 生成的暗碼的字符數。長度必需介於 1 和 128 個字符之間。
//
// 前往成果:
// 指定長度的隨秘密碼。
例:
for (int i = 0; i < 10; i++)
{
Response.Write(Membership.GeneratePassword(20, 1) + "<br>");
}
成果為
C!&^HoTNv3!ZHkK9BAbu
azLgER)JJ-UW8q*14yz*
I3qnb]Zxu16ht!kKZ!Q*
9U:MAQ&c1x)^aed@xe**
oL(%4JvfbP&t5*Hpl4l-
6@zj$CnhW&D+|xOf:qIk
A/!Di&l*tY$QaMH0gyzY
z^wu6{1BMq7D^+WU]>f$
1OgIJS3&09fw0F9.|aXA
8F+Gy+L{O6x{SfugME*%
不知能否正好相符你的請求?