Улучшение случайного выбора: Python su bnet генератор маски - PullRequest
1 голос
/ 27 января 2020

Я создал этот код, чтобы генерировать случайную маску su bnet (чтобы я мог на практике преобразовать их в связанный с ними префикс на бумаге). Я случайно создаю маску su bnet по одному октету за раз , но если какой-либо октет НЕ равен 255, остальные автоматически получат значение "0":

from random import randint

# choose subnet bytes at random
def pick_num():
    # list of valid subnet bytes
    list = [0, 128, 192, 224, 240, 248, 252, 254, 255]

    random = randint(0,8)
    num = list[random]
    return num

def generate_netmask():
    current_byte = 0
    submask_mask = ""
    count = 1
    while count <= 4:
        current_byte = pick_num()
        if current_byte == 255:
            submask_mask += str(current_byte) + "."
            count += 1
        else:
            submask_mask += str(current_byte) + "."
            count += 1
            break

    while count != 5:
        if count != 4:
            submask_mask += "0."
            count += 1
        elif count == 4:
            submask_mask += "0"
            count += 1

    return submask_mask

print(generate_netmask())

В результате большинство моих выходных данных не выходят за 1-й или 2-й октет. Например: 128.0.0.0, 192.0.0.0, 254.0.0.0 и т. Д. c. Время от времени я получаю что-то вроде: 255.255.192.0

Я рассматриваю это как забавную возможность узнать об использовании случайности в коде.

Может кто-нибудь порекомендовать способ / способы сделать этот код более справедливым по отношению к другим возможностям su bnet mask? Я понимаю, что мог бы также составить список всех масок su bnet и произвольно выбирать элементы в списке.

Заранее спасибо, Себастьян

...