狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#生成帶數(shù)字和大小寫字母的隨機(jī)碼

admin
2024年1月1日 22:52 本文熱度 659

最近做一個(gè)項(xiàng)目需要用到查詢碼,于是順手寫了一個(gè)隨機(jī)碼生成類:

public class RandomPW
   {

       
/// <summary>
       /// 生成單個(gè)隨機(jī)數(shù)字
       
/// </summary>
       public int CreateNum()
       {
           Random random
= new Random(();
           
int num = random.Next(10);
           
return num;
       }
       
/// <summary>
       /// 生成單個(gè)大寫隨機(jī)字母
       
/// </summary>
       public string CreateBigAbc()
       {
           
//A-Z的 ASCII值為65-90
           Random random = new Random();
           
int num = random.Next(65, 91);
           
string abc = Convert.ToChar(num).ToString();
           
return abc;
       }
       
/// <summary>
       /// 生成單個(gè)小寫隨機(jī)字母
       
/// </summary>
       public string CreateSmallAbc()
       {
           
//a-z的 ASCII值為97-122
           Random random = new Random();
           
int num = random.Next(97, 123);
           
string abc = Convert.ToChar(num).ToString();
           
return abc;
       }
       
/// <summary>
       /// 生成隨機(jī)數(shù)
       
/// </summary>
       /// <returns></returns>
       public string GetRandomPW(int len)
       {
           StringBuilder sb
= new StringBuilder();
           
for (int i = 0; i < len; i++)
           {
               Random random
= new Random();
               
switch (random.Next(3))
               {
                   
case 0:
                       sb.Append(CreateNum());
                       
break;
                   
case 1:
                       sb.Append(CreateSmallAbc());
                       
break;
                   
case 2:
                       sb.Append(CreateBigAbc());
                       
break;
               }
           }
           
var nowdata = DateTime.Now.ToString("yyyymmdd");
           
var result = nowdata + sb.ToString();
           
return result;
       }
   }

但是使用之后發(fā)現(xiàn)生成的隨機(jī)碼都是一樣的類似于:201813137777777777、20180613XXXXXXXXXX這類的隨機(jī)碼,可以看出,后面的隨機(jī)碼完全一樣,于是我查看了一下random類的定義,發(fā)現(xiàn)random有兩個(gè)構(gòu)造方法,一個(gè)帶參一個(gè)不帶參:

// 摘要:
//     新實(shí)例初始化 System.Random 類&#xff0c;使用依賴于時(shí)間的默認(rèn)種子值。
public Random();
//
// 摘要:
//     新實(shí)例初始化 System.Random 類&#xff0c;使用指定的種子值。
//
// 參數(shù):
//   Seed:
//     用來(lái)計(jì)算偽隨機(jī)數(shù)序列起始值的數(shù)字。 如果指定的是負(fù)數(shù)&#xff0c;則使用其絕對(duì)值。
public Random(int Seed);

想了一下,會(huì)不會(huì)是這個(gè)種子我沒(méi)有設(shè)置,導(dǎo)致隨機(jī)數(shù)的起始值一直是一樣的呢,于是我修改代碼為:

public class RandomPW
   {

       
/// <summary>
       /// 生成單個(gè)隨機(jī)數(shù)字
       
/// </summary>
       public int CreateNum(int i)
       {
           Random random
= new Random((int)DateTime.Now.Ticks+i);
           
int num = random.Next(10);
           
return num;
       }
       
/// <summary>
       /// 生成單個(gè)大寫隨機(jī)字母
       
/// </summary>
       public string CreateBigAbc(int i)
       {
           
//A-Z的 ASCII值為65-90
           Random random = new Random((int)DateTime.Now.Ticks+i);
           
int num = random.Next(65, 91);
           
string abc = Convert.ToChar(num).ToString();
           
return abc;
       }
       
/// <summary>
       /// 生成單個(gè)小寫隨機(jī)字母
       
/// </summary>
       public string CreateSmallAbc(int i)
       {
           
//a-z的 ASCII值為97-122
           Random random = new Random((int)DateTime.Now.Ticks+i);
           
int num = random.Next(97, 123);
           
string abc = Convert.ToChar(num).ToString();
           
return abc;
       }
       
/// <summary>
       /// 生成隨機(jī)數(shù)
       
/// </summary>
       /// <returns></returns>
       public string GetRandomPW(int len)
       {
           StringBuilder sb
= new StringBuilder();
           
for (int i = 0; i < len; i++)
           {
               Random random
= new Random((int)DateTime.Now.Ticks+i);
               
switch (random.Next(3))
               {
                   
case 0:
                       sb.Append(CreateNum(i));
                       
break;
                   
case 1:
                       sb.Append(CreateSmallAbc(i));
                       
break;
                   
case 2:
                       sb.Append(CreateBigAbc(i));
                       
break;
               }
           }

           
var result = sb.ToString();
           
return result;
       }

   }

可以看到,在每次聲明Random對(duì)象的時(shí)候,保證傳進(jìn)去的種子的值是改變的,可以保持生成的隨機(jī)碼不重復(fù)。

調(diào)用方法:

var newStr = new RandomPW();

textBox1.Text = newStr.GetRandomPW(6);


該文章在 2024/1/2 0:13:52 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved