シンプルだが不可解な質問:
文字列「516e965a8fe4b」があるとします。0~100の数字になってほしい。このような英数字ハッシュを持つ可能性は 100 をはるかに超えるため、重複は問題ありません。
これを実装するにはどうすればよいですか?
なぜこれが欲しいのか知りたいです。とにかく、これは私がそれを行う方法です。
次に、その番号の MOD 101 を作成します。(モジュラス)
ID= 合計 % 101
このようなものを使用してください。数値の 16 進値を追加し、100 に変更します。
function findNumber($hash) {
$sum=0;
for($i=0;$i<length($hash);$i++) {
$sum+=hexdec($hash[$i]);
}
return $sum%100;
}
まあ、結果は入力によって直接決定できないため、他のアプローチよりも安全な代替アプローチがあります。
function getNumber($hex, $min, $max){
srand(hexdec($num));
return rand($min, $max);
}
$min と $max (あなたの場合はそれぞれ 0 と 100) の間の数値があり、同じ入力でこの関数を実行するたびに常に同じになります (ランダム関数を使用しても決定論的です!)