【发布时间】:2012-03-10 08:03:45
【问题描述】:
考虑以下int;
int start = 287729472784;
从该 int 中,我需要创建一个长度仅为三位数的新 int,我可以使用 0-9 之间的任何值。
但是,为了创建新的 int,我不能使用任何形式的已经存在的随机数生成器。
我想知道是否可以结合使用 modular、xor、and、bit-shift- 以某种方式减少数量的操作。比如 xor 最后一个数字与它前面的数字,但我不确定这是否可能。
基本上我需要从起始 int 创建一个三位数的 long int,理想情况下将起始 int 的长度减少到三位数。
我希望这是有道理的,我将不胜感激。
谢谢
【问题讨论】:
-
1.这在 Java 中不是有效的
int- 它太大了。 2. 你的用例是什么?您是否需要为传入的每个较大整数生成不同的三位数 int?如果是这样,放弃你的任务 - 这是不可能的(见Pigeonhole principle)。如果没有,一个简单的模运算(如 Dirk 建议的那样)将很好地完成这项工作。 -
public string intRand( int input ) { return "004"; } -
嗯,我实际使用的输入 int 是将 SHA1 哈希转换为 BigInteger 并表示为字符串。哈希被放入一个字节[],然后这些字节被放入一个 BigInteger。我只是想我会从一个较小的例子开始:)