我想为我的用户提供一个简洁的、base-64 字母数字代码,以代表他们在从 1024 名候选人的选票中按顺序选择 1024 名候选人时所做的选择。(这是最坏的情况......我可能可以忍受 < 256)。
我有哪些选择?
一种天真的方法告诉我,如果 1024 个元素中的每一个都可以用一个唯一的序数 (2 ^ 10) 表示,并且我需要一系列 1024 个序数,那么 10 位 x 1024 个位置 = 10,240 位就可以了。但这仍然是 1707 个基数 64 位,比我希望的要长一点,感觉就像我在浪费 9 位来表示“1”(尽管我可能错了)。
经典置换理论应该告诉我可能性的数量 - nPr(顺序很重要,没有重复)。但是这个数字非常大,它困扰着我的小脑袋,压倒了我的 dec<->bin 计算器。如果我这样做,我会不会用更少的位数逃脱?(为什么不呢?数学很烂啊?)
Java 代码的加分项,因此我可以修改 n 和 r 以找到所需的位数以及 radix-64 位数。:-)
PS。这是对我的严肃提案的可行性测试,该提案使用纸张进行审计跟踪,使用计算机进行快速计数。