У меня есть номера в диапазоне 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/>");
}
?>
Обновление:
Вот идентификаторы, сгенерированные благодаря этим ответам:
qpOLHk
NMb84H
aI740D
x5urn0
UsROKn
hPeb7K
EcByu7
1zYVRu
oWlieR
LjIFBe
8G52YB
v3splY
SqPMIl
fNc95I
Cazws5
ZxWTPs
mUjgcP
JhGDzc
6E30Wz
Sweeeeeet: -)