生成易于记忆的数字

时间:2016-12-09 17:04:27

标签: python python-3.x random

是否可以生成容易记住的1000000到9999999之间的随机数?

我知道easy to remember这个词是相对的,但我相信对于你的典型人来说,数字331332比537106更容易记住(或者是它?)

用例。我正在为应用程序中的人生成唯一的数字,并且我认为我可以通过分配它们easy numbers来尝试让人们更容易。我玩的方式是第一个注册的人获得简单的数字,从那里容易减少。

如果您在任何编程语言中都看到相同的内容,那么您可以向其他人发布灵感

那里有一个similar question here,但这本质上是字母数字,而且是六年前的

2 个答案:

答案 0 :(得分:2)

在这里,我发现了一些令人难忘的东西: http://www.slideshare.net/cntryrckr69/what-makes-a-number-memorable

我已经基于其中的一些东西在python中实现了它

  

以下是代码的含义:

import random

def easynum(num):
    num = str(num)

    if len(set(num)) <= 2: # common characters eg. 1114111
        print("common")
        return True
    if num == num[::-1]: # its the same backwards eg. 1234321
        print("reversible")
        return True
    if all(x <= y for x, y in zip(list(num), list(num)[1:])): # increasing, e.g. 123456789
        print("increasing")
        return True
    if all(x >= y for x, y in zip(list(num), list(num)[1:])): # decreasing
        print("decreasing")
        return True


for count in range(10):
    rand = random.randint(1000000, 9999999)
    while easynum(rand) == None:
        rand = random.randint(1000000, 9999999)
    print(rand)
  

以下是我得到的输出:

reversible
5691965
reversible
9585859
increasing
1112557
reversible
9057509
reversible
3831383
decreasing
8322000
increasing
1122356
common
4884484
decreasing
9887320
common
4004040

答案 1 :(得分:1)

我可以想到一些容易记住的模式:

1234321 (half reversed)
1234567 (in order)
1231231 (repeating)
7654321 (reverse order)
2468024 (even in order)
1357135 (odd in order)
1212121 (alternating)

显然你可以想到更多。有一个不同模式的库。从库中随机选择一个模式,然后在模式的约束内随机填充该模式。例如,您只能选择“按顺序”模式的起始数字,以下数字将取决于起始数字。