On 2018-12-28 17:31, Abdur-Rahmaan Janhangeer wrote: > do you have something like > > choice(balls) > > >>> red
Don't specify the "k=" (which defaults to 1 if you omit it) and use the first element of the results: >>> from random import choices >>> distribution = {"green":2, "red": 2, "blue": 1} >>> data, weights = zip(*distribution.items()) >>> choices(data, weights)[0] 'red' > and subsequent repetitions for long enough yield approximately 2/5 > times r 2/5 times g and 1/5 b You can sample it yourself: >>> from collections import defaultdict >>> a = defaultdict(int) >>> for i in range(10000): ... a[choices(data, weights=weights)[0]] += 1 ... >>> dict(a) {'green': 3979, 'red': 4008, 'blue': 2013} though if you plan to, then it might be better/faster to use cum_weights instead, calculating it once and then reusing it rather than having choices() re-calculate the cumulative-weights on every call. > like one without random choice over list/tuples Not sure what you mean by this. -tkc -- https://mail.python.org/mailman/listinfo/python-list