Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言中生成唯一但可读的名称#_C# - Fatal编程技术网

C# 在C语言中生成唯一但可读的名称#

C# 在C语言中生成唯一但可读的名称#,c#,C#,我正在尝试编写一个服务,其中每个用户在第一次使用该服务时都将被分配一个唯一的名称。我希望生成这个名称,而不是让用户设置它。此外,我希望名称在某种程度上可读性和可记忆性,而不是听起来像GUID或时间戳。本质上,我希望这是类似于Xbox游戏机的东西 我知道不会有超过1000个用户,所以维护唯一性不会是一个问题(我可以避免使用guid的另一个原因) 我正在考虑从字典中提取一些形容词、名词等,并生成这些词的随机但独特的组合 有什么建议吗?这只是一个完全解决问题的代码示例。如果这不能解决问题,请尽量在你的

我正在尝试编写一个服务,其中每个用户在第一次使用该服务时都将被分配一个唯一的名称。我希望生成这个名称,而不是让用户设置它。此外,我希望名称在某种程度上可读性和可记忆性,而不是听起来像GUID或时间戳。本质上,我希望这是类似于Xbox游戏机的东西

我知道不会有超过1000个用户,所以维护唯一性不会是一个问题(我可以避免使用guid的另一个原因)

我正在考虑从字典中提取一些形容词、名词等,并生成这些词的随机但独特的组合


有什么建议吗?

这只是一个完全解决问题的代码示例。如果这不能解决问题,请尽量在你的问题上更具体一些。将
System.Random
类的实例和单词列表(词典)传递给以下方法

静态字符串GetGuid(随机、IList字)
{
const int minGuidSize=10;
const int maxGuidSize=15;
var builder=新的StringBuilder();
while(builder.Length
您可以使用英语n-grams语料库(比如三个字母序列)生成看起来像英语但实际上完全是胡言乱语的单词。这类数据本质上是随机的,但对人类语言和记忆的本质来说是柔和的

,但它可能会将整个单词组合成句子。我想更多的是把字母序列编成假想的单词


EDIT实际上讨论了我所说的内容。

您可以使用这个包含10000个随机名称的列表:

或者使用此网站生成名的随机列表:

安全的方式。维护剩余未使用名称的列表

简单的方法(也非常可扩展),但不安全。依靠两个用户随机获得相同id的可能性

我会尝试得到3到4个包含大约1000种模式的列表,然后在每个列表中随机选取一个值。这将产生大约10E12的可能性,足以避免1000个用户的冲突


JohnLampMartin2212

他们需要固定的限制大小吗?我同意你的想法-输入要使用的单词词典,随机选择3个单词,将它们放在一起,插入DB表中,在名称列上有一个唯一的约束(处理约束冲突以生成新的约束),然后你就可以开始了。那么你的问题是:“这种方法对我有效吗”或“我不知道如何从多个列表中获取并连接随机字符串”或“我从哪里获得字符串”或其他什么?“有什么建议?”是一个讨论问题。请编辑以更具体地说明您要求我们帮助您解决的问题-事实上,该问题应以“非建设性”结束我觉得“形容词+名词”很容易记住:“HotCat”-谁会不记得呢?(但请看另一篇关于我为什么投票结束的评论。)
static string GetGuid(Random random, IList<string> words)
{
    const int minGuidSize = 10;
    const int maxGuidSize = 15;
    var builder = new StringBuilder();
    while (builder.Length < minGuidSize)
        builder.Append(words[random.Next(words.Count)]);
    return builder.ToString(0, Math.Min(builder.Length, maxGuidSize));
}