簡體   English   中英

打印范圍內的隨機電話號碼

[英]Printing random Phone Numbers in a range

我正在嘗試打印大量電話號碼。 在這種情況下,電話號碼的格式為(24)999999999 (為了清楚起見,括號,它們是偶然的。)我需要這個列表是隨機的,有一定的限制。

前兩位數字必須介於1124之間,接下來的兩位(即第三和第四位數字)必須介於6799之間。

這是我到目前為止所做的:

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()

list1list2構成了數字的其余部分,它們應該盡可能隨機。

但是,當我運行腳本時,它會像這樣打印

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM