在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
空间复杂度为(1-n),时间复杂度为应该也是最低的,lua方便之处还是很值得利用的 local Random = {};
function Random:Awake() self.m_min = 1; self.m_max = 1; self.m_end = 1; self.m_rangeMap = {}; end
function Random:setRange( min,max ) if min > max then min,max = max ,min; end self.m_min = min; self.m_max = max; self.m_end = max; self.m_rangeMap[self.m_max] = self.m_max; end -------------------不重复------------------------------ function Random:getRandom( ... ) math.randomseed(tostring(os.time()):reverse():sub(1,6));--避免时差太小 math.random(self.m_min,self.m_max);--过滤掉前几个劣质随机数; math.random(self.m_min,self.m_max); math.random(self.m_min,self.m_max); local tmp = math.random(self.m_min,self.m_max); local ret = self.m_rangeMap[tmp]; if ret == nil then ret = tmp; end self.m_rangeMap[tmp] = self.m_max; self.m_max = self.m_max - 1; return ret; end
function Random:getRandomNormal( ... ) math.randomseed(tostring(os.time()):reverse():sub(1,6));--避免时差太小 math.random(self.m_min,self.m_end);--过滤掉前几个劣质随机数; math.random(self.m_min,self.m_end); math.random(self.m_min,self.m_end); local ret = math.random(self.m_min,self.m_end); local tmp = self.m_rangeMap[ret]; if tmp == nil then self.m_rangeMap[ret] = self.m_max; self.m_max = self.m_max - 1; end return ret; end
return Random; |
请发表评论