我创建了此代码,以生成随机的随机子网掩码(因此,我可以练习将其转换为纸上的相关前缀)。我随机创建一个子网掩码,一次 一个八位位组 ,但是如果任何八位位组不是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())
因此,我的大部分输出都不会超过第一个或第二个八位位组。例如:128.0.0.0、192.0.0.0、254.0.0.0等。我时不时会得到类似以下内容的信息:255.255.192.0
我认为这是一个学习在代码中使用随机性的好机会。
有人能推荐一种使此代码对其他子网掩码更公平的方法吗?我意识到我还可以列出所有子网掩码并随机选择列表中的元素。
先谢谢您, 塞巴斯蒂安