我想在長度範圍內生成唯一的隨機字符串。例如,我設置的長度是10.每次生成的字符串都是唯一的。如何使用Golang在長度範圍內生成唯一的隨機字符串?
回答
獨特性有多獨特?
如果通用唯一,請參見:https://en.wikipedia.org/wiki/Universally_unique_identifier
在總共128位的,第4類的UUID有6個保留比特(4版本和其他2個保留比特),所以隨機生成的UUID有122個隨機比特。
的UUID見:Is there a method to generate a UUID with go language
如何顯示呢?(Binary-to-text encoding)
A UUID只是一個128位值。如果以十六進制格式顯示,它將是長度爲32個字符。
如果你想在10位,128/10 = 12.8 => 13位每個地方,所以你需要8192字母!
字符串Golang在UTF-8編碼的,所以你可以使用Unicode字母: Unicode有足夠的代碼點,請參閱:How many characters can be mapped with Unicode?
結論:
如果你需要通用唯一隻是使用的UUID。
看:How to generate a random string of a fixed length in golang?
,或者如果你需要的僞隨機字符串,長度爲10,你可以使用這個(但不是通用唯一):
package main
import "crypto/rand"
import "fmt"
func main() {
n := 5
b := make([]byte, n)
if _, err := rand.Read(b); err != nil {
panic(err)
}
s := fmt.Sprintf("%X", b)
fmt.Println(s)
}
輸出樣本:
FA8EA2FBCE
也相關/有用:[輸出UUID在Go作爲一個短字符串](http://stackoverflow.com/questions/37934162/output-uuid-in-go-as-a-short-string) – icza
- 1. 生成隨機X長度字符串
- 2. 在一個範圍內生成'n'唯一的隨機數
- 3. 在一個範圍內生成'n'個唯一隨機數
- 4. 蟒蛇,生成範圍內的隨機字符串01-12
- 5. 如何在此範圍內以弧度生成隨機角度?
- 6. 在節點中生成自定義長度的唯一隨機字符串
- 7. .NET的 - 如何生成一定範圍內的隨機數字?
- 8. 從ruby中的唯一字符串範圍內生成整數
- 9. 在隨機字節的給定範圍內生成隨機數
- 10. 如何在用戶範圍內生成隨機數字?
- 11. 如何從長度爲28的兩個唯一字符串中生成長度爲28的唯一字符串?
- 12. 使用Javascript生成唯一的隨機字符串
- 13. 如何在生成文件的範圍內生成隨機數?
- 14. 生成一個字符串的隨機固定長度排列
- 15. 如何在Rust的範圍內生成一個隨機數?
- 16. 如何使用Rand函數生成一個長度範圍爲3到9個字符的隨機單詞?
- 17. 如何使用std :: generate_canonical生成範圍[0,1)內的隨機數?
- 18. 生成範圍內的隨機數
- 19. 範圍內的隨機生成器
- 20. 如何在C範圍內生成一個隨機數?
- 21. 如何隨機生成-0.5和0.5範圍內的數字?
- 22. 生成用於標識記錄的唯一隨機字符串
- 23. 在SharePoint文檔庫中生成唯一的隨機字符串
- 24. 生成字符串HASH(唯一的隨機)在JavaScript
- 25. 在plpgsql中生成唯一的隨機字符串
- 26. 從給定字符生成等長的固定長度的隨機字符串
- 27. 生成給定長度的隨機字符串
- 28. 生成python中固定長度的隨機字符串列表
- 29. 我將如何在Ruby中生成一個隨機且唯一的字符串?
- 30. 生成一個隨機數的範圍
你到目前爲止嘗試過什麼?原因是,這個問題對於Stack Overflow來說太開放了。 – smarx