随机数生成类

  

复制代码
import random
class RandomGenerator:
    def __init__(self,count=10,minimum=1,maximum=100):
        self.count=count
        self.min=minimum
        self.max=maximum
        self.g=self._gen()
    def _gen(self):
        while True:
            yield random.randrange(self.min,self.max)
    def gen(self,count=None):
        if count is None:
            count=self.count
        return [next(self.g) for _ in range(count)]

b=RandomGenerator()
print(b.gen(3))
复制代码

 

复制代码
import random
class RandomGenerator:
    def __init__(self,minimum=1,maximum=100,count=10):
        self.min=minimum
        self.max=maximum
        self.count=count
    def gen(self):
        return [random.randint(self.min,self.max) for _ in range(self.count)]
b=RandomGenerator()
print(b.gen())
print(b.gen())
复制代码

 

classmethod & staticmethod

复制代码
import random
class RandomGenerator:
    @classmethod
    def gen(cls,min=1,max=100,count=10):
        return [random.randint(min,max) for _ in range(count)]
    @staticmethod
    def _gen(min=1,max=100,count=10):
        return [random.randrange(min,max+1) for _ in range(count)]
print(RandomGenerator.gen())
print(RandomGenerator.gen())
print(RandomGenerator._gen())
print(RandomGenerator._gen())
print(RandomGenerator()._gen())
print(RandomGenerator()._gen())
复制代码

 

添加Point类

复制代码
import random
class RandomGenerator:
    def __init__(self,minimum=1,maximum=100,count=10):
        self.min=minimum
        self.max=maximum
        self.count=count
        self.g=self._gen()

    def _gen(self):
        while True:
            yield [random.randint(self.min,self.max) for _ in range(self.count)]

    def gen(self,count):
        self.count=count # 每次改变对象count属性
        return next(self.g)

b=RandomGenerator()

class Point:  # class coordinates
    def __init__(self,x,y):
        self.x=x
        self.y=y

    def __str__(self):
        return '{}=>{}'.format(self.x,self.y)

    def __repr__(self):
        return '{} : {}'.format(self.x,self.y)

lst=[Point(*v) for v in zip(b.gen(5),b.gen(5))]
print(lst)
for p in lst:
    print(p.x,':',p.y)
for p in lst:
    print(str(p))
复制代码

 

posted @   ascertain  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示