首页 > 技术文章 > 【Python】随机数/随机值

danhuai 2020-09-24 21:08 原文

一、随机数

import random

# 1 生成m、n之间的随机整数
print(random.randint(10, 99))  # 75

# 2 生成m、n之间的随机浮点数
print(random.uniform(10, 99))  # 98.37125047276466

# 3 生成0-1之间的随机浮点数(可用作百分比)
print(random.random())  # 0.4887568365715589

 

 

二、随机值

"""
-*- coding:utf-8 -*-
@Time   :2020/9/3 18:33
@Author :Jarvis
@File   :jar_random_util.py
@Version:1.0
"""
import random

"""
一、生成指定长度的随机值
    1、数字
    2、小写字母
    3、大小字母
    4、小写+大写
    5、字母(小、大)+数字
    6、数字+小写
    7、数字+大写
    
二、生成随机IP地址
"""


class JarRandomUtil:
    NUMBER = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
    LOWER = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
             'v',
             'w', 'x', 'y', 'z']
    UPPER = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
             'V', 'W', 'X', 'Y', 'Z']
    LOWER_UPPER = LOWER + UPPER
    NUMBER_LOWER_UPPER = NUMBER + LOWER_UPPER
    NUMBER_LOWER = NUMBER + LOWER
    NUMBER_UPPER = NUMBER + UPPER

    def random_int_str(self, count: int, first: bool = False):
        """
        生成指定长度的随机数据字符串
        :param count: 长度
        :param first: 生成的数字字符串 首位是否可以为零
        :return: 字符串数字
        """
        if first:
            return self.__random_base(count, self.NUMBER)
        else:
            while True:
                value = self.__random_base(count, self.NUMBER)
                if str(value[0]) != '0':
                    return value

    def random_lower_str(self, count: int):
        """
        生成指定长度的随机小写字母字符串
        :param count: 长度
        :return:
        """
        return self.__random_base(count, self.LOWER)

    def random_upper_str(self, count: int):
        """
        生成指定长度的随机大写字母字符串
        :param count: 长度
        :return:
        """
        return self.__random_base(count, self.UPPER)

    def random_low_upp_str(self, count: int):
        """
        生成指定长度的随机字母(大、小写)字符串
        :param count: 长度
        :return:
        """
        return self.__random_base(count, self.LOWER_UPPER)

    def random_low_upp_number_str(self, count: int):
        """
        生成指定长度的随机字符(大小写字母+数字)
        :param count: 长度
        :return:
        """
        return self.__random_base(count, self.NUMBER_LOWER_UPPER)

    def random_low_number_str(self, count: int):
        """
        生成指定长度的随机字符(小写字母+数字)
        :param count: 长度
        :return:
        """
        return self.__random_base(count, self.NUMBER_LOWER)

    def random_upp_number_str(self, count: int):
        """
        生成指定长度的随机字符(大写字母+数字)
        :param count: 长度
        :return:
        """
        return self.__random_base(count, self.NUMBER_UPPER)

    @staticmethod
    def random_ip():
        """
        随机IP地址
        :return:
        """
        ip = '{}.{}.{}.{}'.format(
            random.randint(1, 223),
            random.randint(0, 255),
            random.randint(0, 255),
            random.randint(0, 255)
        )
        return ip

    @staticmethod
    def __random_base(count: int, type):
        value = ''
        for c in range(count):
            value += str(type[random.randint(0, len(type) - 1)])
        return value


if __name__ == '__main__':
    jar_random = JarRandomUtil()
    print('数字:', jar_random.random_int_str(100))
    print('小写:', jar_random.random_lower_str(100))
    print('大写:', jar_random.random_upper_str(100))
    print('小写+大写:', jar_random.random_low_upp_str(100))
    print('小写+大写+数字:', jar_random.random_low_upp_number_str(100))
    print('小写+数字:', jar_random.random_low_number_str(100))
    print('大写+数字:', jar_random.random_upp_number_str(100))
    print('随机IP地址:', jar_random.random_ip())

输出:

数字: 1105240301665967443698994792367098726849957022371657845601747093378909885603870223059422134027806617
小写: izoiinfmddmkqjfuvqxqfjgquaamldjdvptolvkjddflehxtgdhnitcamvodynoabgbqgrycofyeudzayqyqwwaeajlermmjcvet
大写: HOCUHEWXUDSMBIYMYSXWWRPBIKKRVLGIREJGCSGAMUWYVARVKDVEWVZEJWBJCWGSTQIUNSDIYSRKBZPWJWQMGERRJTVNTPSCBSZQ
小写+大写: jwsrTpVmTFtezTMPuREhzyAtrUNjkFyTVHGyYclpNOTVXAgLFEtjQJAURAqbzdDJisCuNEFXWAkircrweuVBoxhqUsTEHSQZngFF
小写+大写+数字: nasObkkwdLc2t3GbO9b3sy1V2aGXG2C4n5hpEWdpHWNOBUbYODzi6OE31u27CRRogqTFdIDldhdhW1HIpHAHh6CxRtYcYqbePnit
小写+数字: 0i1eson9d6iodjqiss5lb22mkmld0c0xx71vobpbai734f9k6x21cj6p3y2uivwo3ne1oj2ofdzriq71gu09vz21fpeb7rz5s4fa
大写+数字: CG2SXDP28SZ77WSNGFX3DGUGX7ZXCDTTXTLDQFH435B0ZB85VF4KYB6WELADR6BKRL0YQZ0RI14PGCLWW555E98RN3FZV6FB2549
随机IP地址: 130.32.174.114

 

推荐阅读