Я создал этот код, чтобы генерировать случайную маску 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 и произвольно выбирать элементы в списке.
Заранее спасибо, Себастьян