随机整数生成类
可以先设定一批生成数字的个数,可设定指定生成的数值的范围
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())