gildrd/name-generator

此包的最新版本(v1.0)没有可用的许可证信息。

使用马尔可夫链的名称生成器

v1.0 2021-11-14 21:14 UTC

This package is auto-updated.

Last update: 2024-09-15 03:29:11 UTC


README

Scrutinizer Code Quality Build Status Code Intelligence Status

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();