範囲内の数字は1〜62です。 私はそれらを「暗号化」して、何らかの順序で生成されていると推測することはできません。番号の並べ替え
だから、それは例えば、
1-> 35 2-> 19 3-> 61 ...私は1~1のマッピングを有すること
、100一部のマッピングであるべきです%可逆性。
私はマッピングをハードコーディングすることができますが、私はそれと数学のソリューション、引数として数値を取り、範囲1-62で番号を生成し、重複が発生しない式のいくつかの種類を好むだろう。この式が存在する可能性はありますか?ただ、歴史、検証スクリプトのための
:
<?
$test = array();
$val = 37;
for($i=0;$i<62;$i++)
{
if($test[($i*$val)%62])
{
print("Collision: $i ".$test[($i*$val)%62]."<br/>");
}
$test[($i*$val)%62] = $i;
print("$i => ".(($i*$val)%62)."<br/>");
}
?>
アップデート:ここで
IDは、これらの答えのおかげで生成されます。
qpOLHk
NMb84H
aI740D
x5urn0
UsROKn
hPeb7K
EcByu7
1zYVRu
oWlieR
LjIFBe
8G52YB
v3splY
SqPMIl
fNc95I
Cazws5
ZxWTPs
mUjgcP
JhGDzc
6E30Wz
Sweeeeeet :-)
これは私が検討していたハードコーディングに向いています。静的なシードはしますが、あまりにも多くの処理があることを恐れています。私は何か簡単なものが必要です... – BarsMonster
@BarsMonster:処理はどれくらい許可されていますか?このアルゴリズムのどの部分を高価すぎると見なしていますか? –
これは、解釈された言語で毎秒10,000回実行されます。あなたのソリューションはおそらくパフォーマンスの点では合っていますが、実際にはoutput =(input + 35)%62のようなものがありますが、少しランダムです。 – BarsMonster