改进随机选择:Python子网掩码生成器

改进随机选择: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(): 当前字节=

我创建这段代码是为了生成一个随机子网掩码(所以我可以在纸上练习将它们转换为相关前缀)。我正在随机创建一个子网掩码一次创建一个八位字节,但如果任何八位字节不是255,其余八位字节将自动为“0”:

来自随机导入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())