从文件夹中选择随机文件,根据名称分配概率

时间:2016-02-17 18:38:59

标签: php regex random glob random-sample

文件是字体,他们常常有像FontName-type.extension这样的名字

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

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

然而,目标是尽可能获得代表性的样本,并且共享FontName的字体彼此更加相似。

我的问题是随机选择字体,以便共享FontName的字体也分享被选中的概率。

1 个答案:

答案 0 :(得分: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中选择一个随机密钥,然后选择一个随机值。