文字列を受け取り、対応する値を定義済みの「比率」を持つ配列に出力するハッシュ関数を作成したいと考えています。たとえば、私の配列が値を保持している場合:
[0] => "output number 1"
[1] => "output number 2"
[2] => "output number 3"
次に、ハッシュ関数int H(string)
は範囲内の任意の文字列の値のみを返す必要があり0
ます2
(入力文字列は常に同じキーを返します)。
問題は、事前定義された比率によっても判断したいということです。たとえば
、指定された文字列は as 、as 、asとして85%
ハッシュされます。正規分布をエミュレートできる関数があれば、さらに良くなります。0
10%
1
5%
2
また、頻繁に実行されるため、高速である必要があります。PHPでこれにアプローチする方法について、誰かが私を正しい方向に向けることができますか? これを尋ねたのは私が初めてではないと思いますが、SOを1時間掘り下げました。
編集:
私が今までやってきたことは、ハッシュ関数を に組み込むことc
です。上記のハッシュをプロポーションなしで行います (まだ php には慣れていません):
int StringFcn (const void *key, size_t arrSize)
{
char *str = key;
int totalAsciiVal = 0;
while(*str)
{
totalAsciiVal += *str++;
}
return totalAsciiVal % arrSize;
}