Как в Python определить, какое рандомное число будет чаще всего появляться из списка значений, начиная от (00, 0 ,1 ,2 ... 36 )?
Недавно начал осваивать модуль random. Нужно сделать 1000 раз и выявить самое частое число, если можно в % отношении, или хотя бы какое количество раз.
Если ещё можно вывести не 1, а 5 самых частых чисел.
Проблема с 00, не понимаю как записать как число.
Ответы (2 шт):
Автор решения: Wairua
→ Ссылка
Если правильно понял, то так как-то:
from random import choice
from collections import Counter
if __name__ == '__main__':
rnd = [
'00',
'0',
'1',
'2',
# ...
'31',
'32',
'33',
'34',
'35',
'36'
]
rnd_list = [choice(rnd) for _ in range(1000)]
d = Counter(rnd_list)
print(d.most_common(5))
print({a[0]: f'{a[1] / 1000 * 100:.1f}%' for a in d.most_common(5)})
Автор решения: MarianD
→ Ссылка
import random
from collections import Counter
MAX_NUM = 36 # 0, 1, ..., 36 (00 то же самое как 0)
RAND_NUMS = 1000 # сколько случайных
OUTPUT_NUMS = 3 # сколько нужно вывести
random_list = random.choices(range(MAX_NUM+1), k=RAND_NUMS)
print(Counter(random_list).most_common(OUTPUT_NUMS))
(00 то же самое как 0.)
Тест для MAX_NUM = 4, RAND_NUMS = 10 и OUTPUT_NUMS = 3:
In[217]: random_list = random.choices(range(MAX_NUM+1), k=RAND_NUMS)
In[218]: random_list
[3, 4, 2, 3, 1, 2, 2, 1, 3, 3]
In[219]: Counter(random_list).most_common(OUTPUT_NUMS)
[(3, 4), (2, 3), (1, 2)]
B %:
most_common = Counter(random_list).most_common(OUTPUT_NUMS)
most_common_perc = [(i, 100 * j / RAND_NUMS) for i, j in most_common]
print(most_common_perc)
[(3, 40.0), (2, 30.0), (1, 20.0)]