【问题标题】:Select a random file from folder, distribute probability based on name从文件夹中选择一个随机文件,根据名称分配概率
【发布时间】:2016-02-17 18:38:59
【问题描述】:

文件是字体,它们的名称很常见,例如 FontName-type.extension

我将它们全部放在一个文件夹中,我目前有这个功能:

function random_font($dir = 'fonts')
{
   $fonts = glob($dir . '/*');
   return $fonts[devurandom_rand(0, count($fonts) - 1)];
}

然而,我们的目标是获得尽可能具有代表性的样本,共享 FontName 的字体比不共享的字体更加相似。

我的问题是随机选择一种字体,这样共享 FontName 的字体也共享被选中的概率。

【问题讨论】:

    标签: php regex random glob random-sample


    【解决方案1】:

    首先,创建一个将字体名称映射到其文件路径的数组。例如,您原来的$fonts 可能是:

    // You already have this array from the glob function.
    $fonts = [
        'Helvetica',
        'Helvetica-Bold',
        'Times New Roman',
    ]
    

    然后,循环遍历$fonts 数组以创建$fontNames 数组。 $fontNames 数组将字体名称映射到文件名。在此示例中,$fontNames 数组将是:

    $fontNames = [
        'Helvetica' => ['Helvetica', 'Helvetica-Bold'],
        'Times New Roman' => ['Times New Roman'],
    ];
    

    然后,您可以从$fontNames 中选择一个随机密钥,然后依次选择一个随机值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 2014-07-29
      • 2011-02-15
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多