使用GUID是一种生成随机字符串和数字的有效方法吗?

Guy*_*Guy 2 .net c# random

可能重复:
System.Guid.NewGuid()的随机性如何?

基于这个问题,我想知道是否使用GUID生成一个随机的字符串和数字有任何缺陷吗?

因此,例如,如果我想要一个随机字符串和32个或更少字符的数字,我可以使用以下C#代码:

string s = Guid.NewGuid().ToString().Replace("-", "");
Run Code Online (Sandbox Code Playgroud)

如果长度需要小于32,我将截断字符串,如果需要更长,我会将多个GUID一起添加.

这种方法有哪些缺陷?

在我写完之后,我意识到一个缺陷就是它只会有字母a到f所以我会修改这个问题:

这是一个真正随机的6个字符和10个数字的序列吗?

Mic*_*ael 18

GUID不保证随机性,它保证了唯一性.如果您想要随机性,请使用Random生成字符串.

  • 随机类本身只生成伪随机数.如果你想要更随机的东西,你需要使用像RNGCryptoServiceProvider- http://msdn.microsoft.com/en-us/library/system.security.cryptography.rngcryptoserviceprovider.aspx这样的东西. (2认同)

TML*_*TML 12

它实际上并不是随机的,而是(相对)唯一的.如果你真的想要随机性,我建议使用类似System.Random中值的哈希值.

这是一个指向.NET"System.Random"的MSDN文档的链接,以及它们的Hashing包的相同内容.