0

シンプルだが不可解な質問:

文字列「516e965a8fe4b」があるとします。0~100の数字になってほしい。このような英数字ハッシュを持つ可能性は 100 をはるかに超えるため、重複は問題ありません。

これを実装するにはどうすればよいですか?

4

4 に答える 4

4

なぜこれが欲しいのか知りたいです。とにかく、これは私がそれを行う方法です。

  • 各数字または文字の ASCII 値を追加します。
  • 次に、その番号の MOD 101 を作成します。(モジュラス)

    ID= 合計 % 101

于 2013-04-17T11:44:18.707 に答える
1

このようなものを使用してください。数値の 16 進値を追加し、100 に変更します。

function findNumber($hash) {

    $sum=0;
    for($i=0;$i<length($hash);$i++) {
        $sum+=hexdec($hash[$i]);
    }
    return $sum%100;

}
于 2013-04-17T11:48:10.067 に答える
1

まあ、結果は入力によって直接決定できないため、他のアプローチよりも安全な代替アプローチがあります。

function getNumber($hex, $min, $max){
    srand(hexdec($num));
    return rand($min, $max);
} 

$min と $max (あなたの場合はそれぞれ 0 と 100) の間の数値があり、同じ入力でこの関数を実行するたびに常に同じになります (ランダム関数を使用しても決定論的です!)

于 2013-04-17T12:14:47.243 に答える