随机生成随机数随机数字串的元组列表

时间:2018-01-21 01:19:09

标签: python python-2.7 list numpy scipy

出于模拟目的,我想生成一个字符串对列表。每个字符串对由两个字符串组成。每个字符串由随机生成的数字组成。字符串的长度也是随机数。如何使用Numpy实现此功能?

2 个答案:

答案 0 :(得分:4)

这是一个无限的发电机。您可以从中获取一部分(显示在最后一行),也可以直接迭代它:

import itertools
import random

def one_string():
    l = random.randint(1, 5)
    return "".join(random.choice("0123456789") for _ in range(l))

def string_pairs():
    while True:
        yield one_string(), one_string()


print(list(itertools.islice(string_pairs(), 10)))

产生

[('840', '452'), ('20', '4651'), ('784', '589'), ('1', '08211'), ('809', '2103'), ('48975', '46884'), ('307', '83913'), ('88512', '212'), ('57', '11772'), ('38', '14')]

答案 1 :(得分:3)

您不需要numpy来获得如此简单的结果。您所需要的只是列表理解random.randint为:

>>> from random import randint

>>> [(str(randint(0, 99999)), str(randint(0, 99999))) for _ in range(10)]

上述解决方案将返回10对随机数字符串,每个字符串的最大长度为5位。 random.randint这里会生成099999之间的随机数,由于选择是随机的,因此位数也是随机的。然后简单地将它们输入到字符串中以获得所需的结果。

示例结果:

[('8655', '9023'), ('7398', '7465'), ('8595', '4994'), ('8532', '9251'), ('196', '5911'), ('4219', '6240'), ('7628', '8162'), ('256', '9675'), ('4466', '4814'), ('6459', '3798')]