zoukankan      html  css  js  c++  java
  • python习题——随机整数生成类

    随机整数生成类

    可以先设定一批生成数字的个数,可设定指定生成的数值的范围

    1.普通类实现
    import random
    import random
    
    
    class RandomGen:
        def __init__(self, start=1, stop=100, count=100):
            self.start = start
            self.stop = stop
            self.count = count
            
        def generate(self):
            return [random.randint(self.start, self.stop) for i in range(self.count)]
        
        
    print(RandomGen().generate())
    
    2.作为工具类来实现,提供类方法
    import random
    
    
    class RandomGen:
        @classmethod
        def generate(self, start=1, stop=100, count=10):
            return [random.randint(start, stop) for i in range(count)]
    
    
    print(RandomGen().generate())
    
    
    2. 生成器实现1
    import random
    
    
    class RandomGen:
        def __init__(self, start=1, stop=100, count=100):
            self.start = start
            self.stop = stop
            self.count = count
            self._gen = self._generate()
    
        def _generate(self):
            while True:
                yield random.randint(self.start, self.stop)
                
        def generate(self):
            return [next(self._gen) for i in range(self.count)]
    
    
    print(RandomGen().generate())
    
    2. 生成器实现2
    import random
    
    
    class RandomGen:
        def __init__(self, start=1, stop=100, count=100):
            self.start = start
            self.stop = stop
            self.count = count
            self._gen = self._generate()
    
        def _generate(self):
            while True:
                yield random.randint(self.start, self.stop)
    
        def generate(self):
            yield from (next(self._gen) for i in range(self.count))
    
    
    print(list(RandomGen().generate()))
    
    2. 生成器实现3
    import random
    
    
    class RandomGen:
        def __init__(self, start=1, stop=100, count=100):
            self.start = start
            self.stop = stop
            self.count = count
            self._gen = self._generate()
    
        def _generate(self):
            while True:
                yield random.randint(self.start, self.stop)
    
        def generate(self, count=0):  # 可以在后期生产数据时控制个数
            count = self.count if count <= 0 else count
            return [next(self._gen) for i in range(self.count)]
    
    
    print(RandomGen().generate(5))
    print(RandomGen().generate())
    
    2. 生成器实现4
    import random
    
    
    class RandomGen:
        def __init__(self, start=1, stop=100, count=100):
            self.start = start
            self.stop = stop
            self._count = count
            self._gen = self._generate()
    
        def _generate(self):
            while True:  # 一次yield 一批
                yield [random.randint(self.start, self.stop) for _ in range(self._count)]
    
        def generate(self, count=0):  # 可以在后期生产数据时控制个数
            if count > 10:
                self._count = count
            return next(self._gen)
    
    
    print(RandomGen().generate(5))
    print(RandomGen().generate())
    
    2. 生成器实现5
    import random
    
    
    class RandomGen:
        def __init__(self, start=1, stop=100, count=100):
            self.start = start
            self.stop = stop
            self._count = count
            self._gen = self._generate()
    
        def _generate(self):
            while True:  # 一次yield 一批
                yield [random.randint(self.start, self.stop) for _ in range(self._count)]
    
        def generate(self):  # 可以在后期生产数据时控制个数
            return next(self._gen)
    
        @property
        def count(self):
            return self._count
            
        @count.setter
        def count(self, count):
            self._count = count
            
    r = RandomGen()
    print(r.count)
    print(r.generate())
    r.count = 3
    print(r.generate())
    
  • 相关阅读:
    回溯、递归、DFS方法
    3-11日学习记录
    文本清洗总结
    归并排序学习
    3-9日学习笔记
    P3182 [HAOI2016]放棋子 错排问题
    P2880 [USACO07JAN]平衡的阵容Balanced Lineup 线段树 树状数组
    P3469 [POI2008]BLO-Blockade 强连通
    P2756 飞行员配对方案问题 网络流 二分图匹配
    P1823 [COI2007] Patrik 音乐会的等待 单调栈
  • 原文地址:https://www.cnblogs.com/duanming/p/11830283.html
Copyright © 2011-2022 走看看