diff --git a/Lib/random.py b/Lib/random.py
index 8560fb9..af04ab2 100644
--- a/Lib/random.py
+++ b/Lib/random.py
@@ -367,16 +367,6 @@
         http://en.wikipedia.org/wiki/Triangular_distribution
 
         """
-        # Sanity check. According to the doc low must be less or equal to
-        # high. And mode should be somewhere between these bounds.
-        if low > high:
-            raise ValueError('high cannot be less then low.')
-        if mode is not None and (mode < low or mode > high):
-            raise ValueError('mode must be between low and high.')
-
-        if high == low:
-            return low
-
         u = self.random()
         c = 0.5 if mode is None else (mode - low) / (high - low)
         if u > c:
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py
index 75e1afc..3316415 100644
--- a/Lib/test/test_random.py
+++ b/Lib/test/test_random.py
@@ -43,33 +43,6 @@
         self.assertRaises(TypeError, self.gen.seed, 1, 2)
         self.assertRaises(TypeError, type(self.gen), [])
 
-    def test_triangular(self):
-        # Check that triangular() correctly handles bad input. See issue 13355.
-        # mode > high.
-        with self.assertRaises(ValueError):
-            random.triangular(mode=2)
-        with self.assertRaises(ValueError):
-            random.triangular(low=1, high=10, mode=11)
-        with self.assertRaises(ValueError):
-            random.triangular(low=1, high=1, mode=11)
-        # mode < low.
-        with self.assertRaises(ValueError):
-            random.triangular(mode=-1)
-        with self.assertRaises(ValueError):
-            random.triangular(low=1, high=10, mode=0)
-        with self.assertRaises(ValueError):
-            random.triangular(low=1, high=1, mode=0)
-        # low > high
-        with self.assertRaises(ValueError):
-            random.triangular(low=5, high=2)
-        with self.assertRaises(ValueError):
-            random.triangular(low=5, high=2, mode=1)
-        with self.assertRaises(ValueError):
-            random.triangular(low=-2, high=-5)
-
-        self.assertEqual(random.triangular(low=10, high=10), 10)
-        self.assertEqual(random.triangular(low=10, high=10, mode=10), 10)
-
     def test_jumpahead(self):
         self.gen.seed()
         state1 = self.gen.getstate()
@@ -570,7 +543,7 @@
         for variate, args, expected in [
                 (g.uniform, (10.0, 10.0), 10.0),
                 (g.triangular, (10.0, 10.0), 10.0),
-                (g.triangular, (10.0, 10.0, 10.0), 10.0),
+                #(g.triangular, (10.0, 10.0, 10.0), 10.0),
                 (g.expovariate, (float('inf'),), 0.0),
                 (g.vonmisesvariate, (3.0, float('inf')), 3.0),
                 (g.gauss, (10.0, 0.0), 10.0),
diff --git a/Misc/ACKS b/Misc/ACKS
index 9480f2d..4de44cc 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -907,7 +907,6 @@
 Žiga Seilnach
 Yury Selivanov
 Fred Sells
-Yuriy Senko
 Jiwon Seo
 Joakim Sernbrant
 Roger Serwy
diff --git a/Misc/NEWS b/Misc/NEWS
index 3a2c1ec..aea5b13 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -30,9 +30,6 @@
 
 - Issue #17656: Fix extraction of zip files with unicode member paths.
 
-- Issue #13355: Raise ValueError on random.triangular call with invalid params.
-  Initial patch by Yuriy Senko.
-
 - Issue #17666: Fix reading gzip files with an extra field.
 
 - Issue #13150, #17512: sysconfig no longer parses the Makefile and config.h
