如何在python中生成随机递增或递减字符串?

如何在python中生成随机递增或递减字符串?,python,random,Python,Random,我需要创建一个随机字符串的序列,它按字母顺序递增递减。例如:ajikfk45kJDk,bFJIPH7CDd,c.我能想到的最简单的方法是 from random import randint a = ''.join(sorted([chr(randint(33,127)) for i in range(randint(1,20))], reverse = False)) print(a) reverse=True使其降序最简单的方法是创建N个随机字符串,然后对它们进行排序 那么,如何创建一个随

我需要创建一个随机字符串的序列,它按字母顺序递增递减。例如:ajikfk45kJDk,bFJIPH7CDd,c.

我能想到的最简单的方法是

from random import randint
a = ''.join(sorted([chr(randint(33,127)) for i in range(randint(1,20))], reverse = False))
print(a)

reverse=True使其降序

最简单的方法是创建N个随机字符串,然后对它们进行排序

那么,如何创建一个随机字符串呢?好的,您还没有指定规则是什么,但是您的三个示例是从ASCII小写、大写和数字集中提取的1到12个字符的字符串,所以让我们这样做

length = random.randrange(1, 13)
letters = random.choices(string.ascii_letters + string.digits, k=length)
string = ''.join(letters)
所以,只要做N次,然后排序

综合起来:

chars = string.ascii_letters + string.digits
def make_string():
    return ''.join(random.choices(chars, k=random.randrange(1, 13)))
def make_n_strings(n):
    return sorted(make_string() for _ in range(n))

这应该足够简单,您可以自定义它,无论您想要什么。想要不区分大小写的排序吗?只需将key=str.upper添加到已排序的。想要其他长度分布吗?只需更换randrange。等等。

有很多方法可以做到这一点,这是在Python 3中使用Ascii字符代码实现这一点的简单示例:-

from random import randint

def generateString(minLength, maxLength):
    result = "";
    resultLength = randint(minLength, maxLength)
    for i in range(resultLength):
        charType = randint(1,3)

        if(charType == 1):
            #number
            result += chr(randint(48, 57))
        elif(charType == 2):
            #upper letter
            result += chr(randint(65, 90))
        elif(charType == 3):
            #lower letter
            result += chr(randint(97, 122))

    return result;

#Example
print(generateString(1,20))
您可以在循环中使用chr Python 3函数,同时生成所需ASCII类别范围内的随机数

你可以在这里或维基百科上找到所有的信息

例如:

chr(99)
-> equals c

有关上的chr函数的详细信息。

您的示例字符串不会严格按照我知道的任何排序顺序或字母顺序增减。请澄清。您需要有26个字符串,其中第一个字符是字母表中与其在生成序列中的位置相对应的字母,其余字符是随机的?为什么不生成所需长度为-1的26个随机字符串,并将字母表中的字母预先添加到这些字符串中?可能重复,或者您可以使用random.choiceString.ascii字母+string.digits,k=N表示随机长度N字符串,从