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

我创建了此代码,以生成随机的随机子网掩码(因此,我可以练习将其转换为纸上的相关前缀)。我随机创建一个子网掩码,一次 一个八位位组 ,但是如果任何八位位组不是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

我认为这是一个学习在代码中使用随机性的好机会。

有人能推荐一种使此代码对其他子网掩码更公平的方法吗?我意识到我还可以列出所有子网掩码并随机选择列表中的元素。

先谢谢您, 塞巴斯蒂安

lzdfkwdz 回答:改善随机选择:Python子网掩码生成器

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2702858.html

大家都在问