我创建这段代码是为了生成一个随机子网掩码(所以我可以在纸上练习将它们转换为相关前缀)。我正在随机创建一个子网掩码,一次创建一个八位字节,但如果任何八位字节不是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、254.0.0.0等等。我不时会得到类似于:255.255.192.0的结果
我认为这是一个学习如何在代码中使用随机性的有趣机会
有谁能推荐一种方法,使此代码对其他可能的子网掩码更公平?我意识到我还可以列出所有子网掩码,并随机选择列表中的元素
提前谢谢大家,, 塞巴斯蒂安
目前没有回答
相关问题 更多 >
编程相关推荐