相关疑难解决方法(0)

Python中的随机字符串

如何在Python中创建随机字符串?

我需要它是数字然后字符重复,直到你完成这是我创建的

def random_id(length):
    number = '0123456789'
    alpha = 'abcdefghijklmnopqrstuvwxyz'
    id = ''
    for i in range(0,length,2):
        id += random.choice(number)
        id += random.choice(alpha)
    return id
Run Code Online (Sandbox Code Playgroud)

python

86
推荐指数
8
解决办法
12万
查看次数

生成具有较低拉丁字母的大随机字符串的最快方法

我正试图从蒂姆斯在线评判中解决这个问题.要解决此问题,您需要生成一个包含1 000 000个小写拉丁字母的序列,并在1秒内将其写入标准输入.

使用C++或Java很容易解决这个问题.我这里有python解决方案:

import os
from random import randint

s = ''.join(chr(97 + randint(0, 25)) for i in range(1000000))
os.write(1, bytes(s, 'utf8'))
Run Code Online (Sandbox Code Playgroud)

需要1.7秒:

$ time python3.3 1219.py > /dev/null

real    0m1.756s
user    0m1.744s
sys     0m0.008s
Run Code Online (Sandbox Code Playgroud)

我得到了"超出时间限制"的结果.所以问题是"如何更快地做到这一点?"

UPD1:使用randint(97, 122)减少16ms的时间.现在是1.740s

UPD2: @Martijn Pieters的解决方案需要0.979秒,但它也没有通过测试.

UPD3 Martijn Pieters提出了一个非常好的解决方案,但它仍然很慢:

from sys import stdin
from random import choice
from string import ascii_lowercase

s = ''.join([choice(ascii_lowercase) for _ in range(1000000)])
stdout.write(s) 
Run Code Online (Sandbox Code Playgroud)

需要0.924秒

from sys import stdout
from random import …
Run Code Online (Sandbox Code Playgroud)

python random performance stdin python-3.x

12
推荐指数
2
解决办法
7529
查看次数

标签 统计

python ×2

performance ×1

python-3.x ×1

random ×1

stdin ×1