做空种子。
好吧,108个字符有点过头了。您有 6 x 6 个单元格,因此总共有 36 个单元格。每个单元格有 3 个不同的状态,但一个 char 至少有 64 个不同的状态(AZ、az、0-9 和一些标点符号以保持简单)所以即使有 36 个字符,我们也有比我们需要的多得多的东西。
所以让我们再分解一下。计算机以二进制工作。位是它可以使用的最小信息位。一位可以打开或关闭,因此它有 2 种可能的状态。2 位可以是关闭、关闭或关闭、打开或打开、关闭或打开、打开,因此有 4 种不同的状态。如果我们添加另一个位,我们会为每个先前的状态获得两个状态,因此 4*2 = 8 个状态用于 3 位。第 4 位再次乘以 2,我们得到 16 个状态,再一次是 32,再一次是 64,这恰好是我们想要使用的字符数。所以需要 6 位来存储 64 种可能的状态。
现在让我们看看网格。每个单元格都有 3 个状态。所以两个细胞有 9 种可能的组合 3*3,对于 3 个细胞,它的 3*3*3 = 27 接下来是 3*3*3*3 = 81 或 3 的 4 个细胞的幂或 3^4 = 81。我们可以利用这个趋势计算出所有 36 个单元格有多少种可能的组合。3 的 36 次方。这是一个很大的数字 150,094,635,296,999,121 或 1.5 亿个组合。
那么我们需要多少位来存储这个数字。我可以作弊并问计算器,但这太容易了,
让我们看看,3 个单元有 27 个组合,5 位有 32 个。所以 3 个单元进入 36 个单元 12 次,每 3 个单元有 5 位,所以 5*12 是 60 位。这是一个很好的整数,因为我们的字符是每个 6 位,我们可以将每个可能的网格组合推入 10 个字符,并留出一些。我们每 3 个单元格有 5 个备用组合,所以我们有 60 个组合备用 12*5。该死的,如果我们还有 4 个组合,那就是 64,即 2^6 或 6 位或一个字符。我们不能带走半个字符,所以它必须是 10 个字符。顺便说一句,4 组合是两位,所以从我们的 60 个字符位中取出,存储网格的最小位数是 58。2 的 58 次方应该刚好大于 3 的 36 次方。
因此,您的网格需要 10 个字符。每个都是ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:)
完美的(8字节4备用位)
我现在选择我的前 10 个字符种子BLINDMAN67
怎么办?