0

私は自分のブログに匿名のコメントシステムを作成しています。ユーザーは、作成したアレイからランダムに選択されたユーザー名を持っている必要があります。600人のユーザー名があります。ランダムに作成することはできません。同じ人が返信を投稿したかどうかわからないため、各投稿に1〜9999のランダムに生成されたキーを、キーと必要なユーザーIDを使用して指定しました。その特定の投稿を通じて数が一貫しているように、ある種の計算を行います。結果は1〜600以内である必要があります。

何かのようなもの:

user_id x foo(1-9999) = bar(1-600)

ありがとう。

4

3 に答える 3

1

おそらく探しているのはハッシュ関数です。ウィキペディアを引用するには:

ハッシュ関数は、キーと呼ばれる可変長の大きなデータセットを固定長の小さなデータセットにマップするアルゴリズムまたはサブルーチンです。

したがって、次のように、標準のハッシュ関数とモジュラー演算を使用して、そのハッシュ関数の出力をユーザー名の範囲にさらにマッピングできます。

function anonymise($username, $post_key) {
    $hash = hash("adler32", "$username/$post_key");
    $hash_decimal = base_convert($hash, 16, 10);
    $anonymised_id = $hash_decimal % 600;

    return $usernames[$anonymised_id];
}
于 2012-04-24T01:13:57.170 に答える
0

では、本当に必要なのは、すべてのポスターの一意の識別子ですか?

http://php.net/ip2long modded 600を使用しないのはなぜですか?

もちろん、それとの衝突検出も行う必要があります。

于 2012-04-24T01:06:46.533 に答える
0

連結された id と post キーで md5 を使用してみてください。その一貫した 32 バイトのハッシュが得られます。これは実際には 16 進数の文字列なので、16 進数から int への変換を行うことで、簡単に数値に変換できます。

編集:フィードバックに基づいています。生成された int を取り、それを 600 でモジュラできます。

于 2012-04-24T01:07:17.303 に答える