改进随机选择:Python子网掩码生成器
我创建这段代码是为了生成一个随机子网掩码(所以我可以在纸上练习将它们转换为相关前缀)。我正在随机创建一个子网掩码一次创建一个八位字节,但如果任何八位字节不是255,其余八位字节将自动为“0”:改进随机选择:Python子网掩码生成器,python,random,subnet,Python,Random,Subnet,我创建这段代码是为了生成一个随机子网掩码(所以我可以在纸上练习将它们转换为相关前缀)。我正在随机创建一个子网掩码一次创建一个八位字节,但如果任何八位字节不是255,其余八位字节将自动为“0”: 来自随机导入randint #随机选择子网字节 def pick_num(): #有效子网字节列表 列表=[0、128、192、224、240、248、252、254、255] random=randint(0,8) num=列表[随机] 返回数 def generate_netmask(): 当前字节=
来自随机导入randint
#随机选择子网字节
def pick_num():
#有效子网字节列表
列表=[0、128、192、224、240、248、252、254、255]
random=randint(0,8)
num=列表[随机]
返回数
def generate_netmask():
当前字节=0
submask_mask=“”
计数=1
你对“公平”的定义是什么?是否希望255
更频繁地出现?如果您只是“列出所有子网掩码并随机选择列表中的元素”,您将得到与现在类似的结果。因为我的当前代码从左到右确定八位字节数,并且如果检测到低于255的数字(255是列表中9种可能性之一),则会将所有后续数字变为“0”,它很难到达第三或第四个八位组。我希望得到更多不同的结果。我在你的代码中看到几个地方,你可以减少你写的内容。而不是键入submask\u mask
并将计数增加两次,您可以将它们从if
语句中完全删除,并且仅当当前字节不等于255
时才会中断。在while
循环中,您有另一个if
语句,您可以从中删除迭代器的增量。您对“公平”的定义是什么?是否希望255
更频繁地出现?如果您只是“列出所有子网掩码并随机选择列表中的元素”,您将得到与现在类似的结果。因为我的当前代码从左到右确定八位字节数,并且如果检测到低于255的数字(255是列表中9种可能性之一),则会将所有后续数字变为“0”,它很难到达第三或第四个八位组。我希望得到更多不同的结果。我在你的代码中看到几个地方,你可以减少你写的内容。而不是键入submask\u mask
并将计数增加两次,您可以将它们从if
语句中完全删除,并且仅当当前字节不等于255
时才会中断。在while
循环中,您有另一个if
语句,可以从中删除迭代器的增量。
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())