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())
    
  • 相关阅读:
    [C++][编程风格]C++命名规则
    [Android]搜索关键字飞入飞出效果 (转)
    android,性能优化,内存优化管理,高级缓存 (转)
    Java内存泄露原因详解
    Java之线程(2) 调时器
    Java之线程(1) 传统线程机制的回顾
    Hibernate(1) 阻抗不匹配
    No4.传统线程同步通信技术
    Android内存溢出
    MAT Memory Analyzer Tool 插件装配(图解)(转)
  • 原文地址:https://www.cnblogs.com/duanming/p/11830283.html
Copyright © 2011-2022 走看看