ユーザーに、1024 人の候補者の投票から順番に 1024 人の候補者を選ぶ際の選択を表す、簡潔な base-64 の英数字コードを提供したいと考えています。(これは最悪のケースです...おそらく < 256 で十分です)。
私のオプションは何ですか?
単純なアプローチでは、1024 個の要素のそれぞれを一意の序数 (2 ^ 10) で表すことができ、一連の 1024 個の序数が必要な場合、10 ビット x 1024 位置 = 10,240 ビットでうまくいくことがわかります。しかし、それはまだ 1707 基数 64 桁であり、これは私が望んでいたよりも少し長く、'1' を表すためにビット 9 ビットを無駄にしているように感じます (ただし、おそらくそれについては間違っています)。
古典的な順列理論は、可能性の数を教えてくれるはずです-nPr(順序は重要で、重複はありません)。しかし、その数は非常に大きく、私の小さな脳を悩ませ、dec<->bin 計算機を圧倒します。このようにすると、ビット数が少なくなりますか? (なぜですか?数学は最悪ですよね?)
Javaコードのボーナスポイントなので、nとrをいじって、必要なビット数と基数64の桁数を見つけることができます。:-)
PS。これは、監査証跡に紙を使用し、迅速な集計にコンピューターを使用する投票システムに関する私の真剣な提案の実現可能性テストです。