golang、python中產生隨機字元:字母、數字、大小寫等

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

go語言中需要自己寫各種函數方法來實現。下面的代碼只代表個人在極少的時間內寫出代碼的結果,並不代表最優演算法。

func main() {   fmt.Println('0')   fmt.Println(randUpString(10))   fmt.Println(randLowString(10))   fmt.Println(randIntString(5))   fmt.Println(randstr(10))}//取得隨機字元包含數字、大小寫等,可以自己隨意擴充。func randstr(l int) string {   var inibyte []byte   var result bytes.Buffer   for i := 48; i < 123; i++ {      switch {      case i < 58:         inibyte = append(inibyte, byte(i))      case i >= 65 && i < 91:         inibyte = append(inibyte, byte(i))      case i >= 97 && i < 123:         inibyte = append(inibyte, byte(i))      }   }   var temp byte   for i := 0; i < l; {      if inibyte[randInt(0, len(inibyte))] != temp {         temp = inibyte[randInt(0, len(inibyte))]         result.WriteByte(temp)         i++      }   }   return result.String()}//取得大寫的隨機字母func randUpString(l int) string {   var result bytes.Buffer   var temp byte   for i := 0; i < l; {      if randInt(65, 91) != temp {         temp = randInt(65, 91)         result.WriteByte(temp)         i++      }   }   return result.String()}//取得小寫隨機字母func randLowString(l int) string {   return strings.ToLower(randUpString(l))}//取得數字隨機個數func randIntString(l int) string {   var result bytes.Buffer   var temp byte   for i := 0; i < l; {      if randInt(48, 58) != temp {         temp = randInt(48, 58)         result.WriteByte(temp)         i++      }   }   return result.String()}func randInt(min int, max int) byte {   rand.Seed(time.Now().UnixNano())   return byte(min + rand.Intn(max-min))}

 

而python中,可以調用庫檔案內建的方法,關鍵的一點是python產生的字元是完全不重複的,而上述GO代碼中產生的字元只能是相鄰不重複。

 

import string,randomprint(''.join(random.sample(string.ascii_letters+string.digits, 10))) #隨機字元print( ''.join(random.sample(string.ascii_letters, 10)).lower()) #小寫字母print( ''.join(random.sample(string.ascii_letters, 10)).upper())#大寫字母print( ''.join(random.sample(string.digits, 10)))#數字
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.