0

我正在寻找一种解决方案,将给定范围内的所有数字转换为同一范围内的另一个数字,然后再将该数字转换回来。

更具体地说,假设我有数字1..100

将所有数字转换为同一范围内的另一个数字的最简单方法是使用:b = 99 -a;稍后使用a = 99 - b;.

我的问题是我想模拟一些随机性

我想在 PHP 中实现它,但编码语言并不重要。

为什么?

你可能会说为什么?好问题 :)

我正在基于id-s 生成一些易于阅读的短代码字符串,并且由于 id 是逐个递增的,因此我的连续短代码太相似了。稍后我需要“解码”短代码以获取 id。

我的算法现在正在做的是:

0000001 -> ababac, 0000002 -> ababad,0000003 -> ababaf

之后

ababac -> 0000001, ababad -> 0000002,ababaf -> 0000003

所以在我真正生成短代码之前,我想尽可能地“随机化”这个数字。

4

2 回答 2

1

选项 1:为什么你没有一个转换数据库?即每条记录都有一个“真实”的id和一个“随机md5”字符串或其他东西

选项 2:使用彩虹表 - 甚至可能是 0 - 10,000 范围内的 MD5 查找表或其他任何值。然后做一个哈希表查找

于 2012-12-15T14:50:27.407 回答
0

最后我在数学论坛上找到了基于模块运算符的解决方案。可以在这里找到解决方案:

https://math.stackexchange.com/questions/259891/function-to-convert-each-number-in-amn-to-another-number-in-the-same-range

于 2012-12-16T12:38:20.023 回答