diff --git a/Lib/random.py b/Lib/random.py
index ef8cb05..a047444 100644
--- a/Lib/random.py
+++ b/Lib/random.py
@@ -344,10 +344,12 @@
         the selections are made with equal probability.
 
         """
+        random = self.random
         if cum_weights is None:
             if weights is None:
-                choice = self.choice
-                return [choice(population) for i in range(k)]
+                _int = int
+                total = len(population)
+                return [population[_int(random() * total)] for i in range(k)]
             else:
                 cum_weights = list(_itertools.accumulate(weights))
         elif weights is not None:
@@ -355,7 +357,6 @@
         if len(cum_weights) != len(population):
             raise ValueError('The number of weights does not match the population')
         bisect = _bisect.bisect
-        random = self.random
         total = cum_weights[-1]
         return [population[bisect(cum_weights, random() * total)] for i in range(k)]
 
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py
index 4d5a874..dd27152 100644
--- a/Lib/test/test_random.py
+++ b/Lib/test/test_random.py
@@ -629,6 +629,22 @@
         self.assertTrue(stop < x <= start)
         self.assertEqual((x+stop)%step, 0)
 
+    def test_choices_algorithms(self):
+        # The various ways of specifing weights should produce the same results
+        choices = self.gen.choices
+        n = 13132817
+
+        self.gen.seed(8675309)
+        a = self.gen.choices(range(n), k=10000)
+
+        self.gen.seed(8675309)
+        b = self.gen.choices(range(n), [1]*n, k=10000)
+        self.assertEqual(a, b)
+
+        self.gen.seed(8675309)
+        c = self.gen.choices(range(n), cum_weights=range(1, n+1), k=10000)
+        self.assertEqual(a, c)
+
 def gamma(z, sqrt2pi=(2.0*pi)**0.5):
     # Reflection to right half of complex plane
     if z < 0.5:
diff --git a/Misc/NEWS b/Misc/NEWS
index 75f0ba6..d49162b 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -34,6 +34,9 @@
 - Issue #27275: Fixed implementation of pop() and popitem() methods in
   subclasses of accelerated OrderedDict.
 
+- Issue #18844: The various ways of specifing weights for random.choices()
+  now produce the same result sequences.
+
 - Issue #28255: calendar.TextCalendar().prmonth() no longer prints a space
   at the start of new line after printing a month's calendar.  Patch by
   Xiang Zhang.
