Commit bad574ba authored by Georgios Dagkakis's avatar Georgios Dagkakis

Triangular added to RandomNumberGenerator. Test added for this

parent b295d5ab
...@@ -45,7 +45,7 @@ class RandomNumberGenerator(object): ...@@ -45,7 +45,7 @@ class RandomNumberGenerator(object):
unknownDistribution=True unknownDistribution=True
for key in distribution.keys(): for key in distribution.keys():
if key in ['Fixed', 'Normal','Exp','Gamma','Logistic','Erlang', if key in ['Fixed', 'Normal','Exp','Gamma','Logistic','Erlang',
'Geometric','Lognormal','Weibull','Cauchy']: 'Geometric','Lognormal','Weibull','Cauchy', 'Triangular']:
unknownDistribution=False unknownDistribution=False
break break
if unknownDistribution: if unknownDistribution:
...@@ -54,7 +54,7 @@ class RandomNumberGenerator(object): ...@@ -54,7 +54,7 @@ class RandomNumberGenerator(object):
# pop irrelevant keys # pop irrelevant keys
for key in distribution.keys(): for key in distribution.keys():
if key not in ['Fixed', 'Normal','Exp','Gamma','Logistic','Erlang', if key not in ['Fixed', 'Normal','Exp','Gamma','Logistic','Erlang',
'Geometric','Lognormal','Weibull','Cauchy']: 'Geometric','Lognormal','Weibull','Cauchy', 'Triangular']:
distribution.pop(key, None) distribution.pop(key, None)
self.distribution=distribution self.distribution=distribution
self.distributionType = distribution.keys()[0] self.distributionType = distribution.keys()[0]
...@@ -132,6 +132,8 @@ class RandomNumberGenerator(object): ...@@ -132,6 +132,8 @@ class RandomNumberGenerator(object):
return number return number
else: else:
continue continue
elif(self.distributionType=="Triangular"): #if the distribution is Triangular
return G.numpyRnd.random.triangular(left=self.min, right=self.max, mode=self.mean)
else: else:
raise ValueError("Unknown distribution %r used in %s %s" % raise ValueError("Unknown distribution %r used in %s %s" %
(self.distributionType, self.obj.__class__, self.obj.id)) (self.distributionType, self.obj.__class__, self.obj.id))
......
...@@ -56,6 +56,19 @@ class RandomNumberGeneratorTestCase(TestCase): ...@@ -56,6 +56,19 @@ class RandomNumberGeneratorTestCase(TestCase):
self.assertTrue(number >= 0) self.assertTrue(number >= 0)
self.assertTrue(number <= 3) self.assertTrue(number <= 3)
def testTriangular(self):
rng = RandomNumberGenerator(obj,
distribution={'Triangular':
{
'min':1,
'max':3,
'mean':2}
})
for i in range(10):
number = rng.generateNumber()
self.assertTrue(number >= 1)
self.assertTrue(number <= 3)
def testNormalWrongParameter(self): def testNormalWrongParameter(self):
rng = RandomNumberGenerator(obj, rng = RandomNumberGenerator(obj,
distribution={'Normal': distribution={'Normal':
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment