1
我想了解最好的方法來建立一個有序的值的數組,基於它們應該發生的頻率。根據字符的頻率和順序不相關,所得到的數組可能有零到某些重複字符。下面是示例數據的細目分類:PHP基於價值頻率生成陣列
字頻率
a => 0.05
b => 0.05
c => 0.1
d => 0.1
e => 0.2
f => 0.5
結果例子:
['b', 'd', 'a', 'f']
['f', 'f', 'c', 'a']
['e', 'c', 'a', 'f']
['a', 'e', 'f', 'd']
數學肯定是不準確的位置;這只是爲了證明以前的陳述。我是不是與數組的順序有關,有些可能有重複字符。
下面是構建數組的基本循環。這裏人爲設計的rand()
方法是爲了免去這篇文章中所有我試過的不合理的數學方法,努力使問題直接和僅僅是概念上的。
$frequencies = [
'a' => 0.05,
'b' => 0.05,
'c' => 0.1,
'd' => 0.1,
'e' => 0.2,
'f' => 0.5
];
$characters = 'abcdef';
$charactersLength = strlen($characters);
$result = [];
for ($i = 0; $i < 4; $i++) {
// $result[] = $this->getCharacterByFrequency();
$result[] = $characters[rand(0, $charactersLength - 1)];
}