我试图编码一个应该有 10 个数字的个人识别号码。它看起来像这个 990830/4197。前两个数字 - 年 - 1999 他出生 第二个数字 - 月份 - 八月 第三个两个数字 - 天 3O.8 最后 4 个数字是这样生成的,所以当你取它时,整数必须除以 11 并且不能剩下任何数字。例如,例如;99+8+30+4197= 4 334 /11 = 394。数字总是应该是 % = 0。当我想生成正确的数字时,我想问一些可能对我有帮助的关键词。谢谢
问问题
712 次
1 回答
0
我在这里假设您已经拥有数字的日期部分。然后您可以使用此代码有效地计算“尾巴”:
from random import randint
date = 990830
s = sum(int(x) * 10**(i % 2) for i, x in enumerate(str(date), 1)) # note 1
tail = randint(90, 908) * 11 - (s % 11) # note 2
print('{}\{}'.format(date, tail))
产生(几个例子):
990830\5462
990830\5132
990830\8751
990830\6397
它们都可以被 11 整除。
- 这只是添加所描述的日期的数字(例如,
99 + 08 + 30
) - 这会计算一个随机的 4 位数字,将其添加到上述总和中会创建
N
一个N % 11 == 0
.
于 2018-11-21T09:56:23.123 回答