[英]Printing random Phone Numbers in a range
我正在嘗試打印大量電話號碼。 在這種情況下,電話號碼的格式為(24)999999999
。 (為了清楚起見,括號,它們是偶然的。)我需要這個列表是隨機的,有一定的限制。
前兩位數字必須介於11
和24
之間,接下來的兩位(即第三和第四位數字)必須介於67
和99
之間。
這是我到目前為止所做的:
ddd = list(range(11, 24))
op = list(range(67, 99))
list1 = list(range(100, 999))
list2 = list(range(1234, 9999))
for d in ddd:
ddd = d
#print(ddd)
for fixos in op:
pre = fixos
#print(pre)
for l in list1:
part1 = l
#print(part1)
for x in list2:
part2 = x
#print(part2)
#print(f"({ddd}) {pre}{l}-{l2}")
numbers = str(ddd) + str(pre) + str(l) + str(x)
#print(numbers)
requests.urllib3.disable_warnings()
list1
和list2
構成了數字的其余部分,它們應該盡可能隨機。
但是,當我運行腳本時,它會像這樣打印
numbers : 11671001000
numbers : 11671001001
它一一進行。 可悲的是,這不是我打算做的。 我如何讓它隨機化?
您可以嘗試使用此代碼生成 100,000 個數字,也可以將范圍 100,000 編輯為您的目標數字
import random
ddd = list(range(11, 25))
op = list(range(67, 100))
for i in ddd:
for j in op:
beg=(str(i)+str(j))
for p in range(100000):
random_number=random.randint(1000000, 10000000)
print(beg+str(random_number))
我想提出一個不同的解決方案:
from random import shuffle
from itertools import cycle
from pprint import pprint
country_code = list(range(11, 24))
operator_code = list(range(67, 99))
exchange_code = list(range(100, 999))
terminal_code = list(range(1234, 9999))
target_len = 100000
ls = set()
while len(ls) < target_len:
shuffle(country_code)
shuffle(operator_code)
shuffle(exchange_code)
shuffle(terminal_code)
numbers = zip(cycle(country_code), cycle(operator_code), cycle(exchange_code), terminal_code)
for c, o, e, t in numbers:
ls.add(f"{c} {o}{e}-{t}")
pprint(ls)
print(len(ls))
# To randomize final output
ls = [i for i in ls]
shuffle(ls)
這里的輸出是有序的,因為集合是有序的,但它使用 shuffle 和循環對隨機化進行了一些改進,並確保您不會使用set
的約束重復數字。 大多數情況下,我提供它是一種以不同方式考慮隨機化的方式 - 雖然選擇帶有替換的隨機數( randint
)是一種路線,但shuffle()
和choice()
都是確保隨機性的好方法,你可以用zip()
做事zip()
和cycle()
本質上創建您從中選擇的隨機流。
解決這個問題的真正方法是創建一個生成器函數 - 我必須更加努力地思考如何去做,但這也是一個可能的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.