gildrd / name-generator
此包的最新版本(v1.0)没有可用的许可证信息。
使用马尔可夫链的名称生成器
v1.0
2021-11-14 21:14 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-15 03:29:11 UTC
README
name-generator
根据马尔可夫算法生成名称。这样生成的名称将看起来“真实”,而不仅仅是随机字母的连续组合。
名称生成的过程仅是统计的。列表中的名称越多,结果将越“真实”。当然,也可能出现一些奇怪的结果。
马尔可夫链的工作原理
每个名称都会进行分析,并生成一个数组,表示一个字母后面跟随另一个特定字母的概率。
例如,如果你有两个单词 'aa' 和 'ab'
- 第一个字母将是 'a'
- 'a' 将会以33%的概率跟随另一个 'a'、'b' 或作为最后一个字母。
- 'b' 将是最后一个字母
如何安装 使用 composer 将此包简单地添加到您的项目中
composer require gildrd/name-generator
如何使用 有几种方式可以使用此包
使用内置的名称列表
此包附带一些名称列表:精灵、矮人和《战锤40K》。其他将在以后添加。
您可以使用一个或多个列表作为参考来生成新的名称
$nameGenerator = new NameGenerator(Type::FEMALE_40K_HIGHER_GOTHIC, Type::FEMALE_40K_LOWER_GOTHIC);
$name = $nameGenerator->generate();
使用您自己的列表
如果您不喜欢包含的列表,您可以使用自己的列表。这些可以是PHP数组或JSON。
数组列表
$nameGenerator = new NameGenerator();
$nameGenerator->analyseFromArray(['Riri', 'Fifi', 'Loulou', 'Picsou']);
$name = $nameGenerator->generate();
JSON列表
$nameGenerator = new NameGenerator();
$nameGenerator->analyseFromJson('["Riri", "Fifi", "Loulou", "Picsou"]');
$name = $nameGenerator->generate();
设置一些参数
有一些您可以设置的参数
- 最小长度:默认情况下,列表中最短名称的长度
- 最大长度:默认情况下,列表中最长名称的长度
- 一个字母是否可以连续出现三次:默认为false,以避免像'aellla'这样的名称
- 名称是否可以没有元音:默认为false,以避免像'rvrk'这样的名称
要配置您的参数,创建一个新的Parameter实例
$nameGenerator = new NameGenerator(Type::MALE_40K_ARCHAIC);
$parameter = new Parameter();
$parameter->setLetterInTriple(false)
->setMinLength(5)
->setMaxLength(9)
->setNoVowelsInName(false);
$nameGenerator->setParameter($parameter);
$name = $nameGenerator->generate();