print1000个随机数中的众数

from random import*
seed(10079)
counts={}
a=[]
b=''
c=''
for i in range(1000):
x=randint(100,200)
a.append(x)
for i in a:
counts[i]=counts.get(i,0)+1
b=counts.values()
m=max(b)
if counts[i]==m:
c=c+' '+str(i)
print('众数是:{}'.format(c))

这个程序为什么结果是错的😢
如果把 if counts[i]==m: 的m改成具体最大值16就对了,这是为什么呢

b=counts.values()
m=max(b)
主要是以上两句放在循环里, counts,b,m的值一值在变
还有 m=16 的原因是 指定了随机种子seed(10079)出现的随机数一直是同一组,导致m成为一个常数16

正确的如下:

from random import*
#seed(10079)
counts={}
a=[]
#b=''
c=''
for i in range(1000):
    x=randint(100,200)
    a.append(x)
for i in a:
    counts[i]=counts.get(i,0)+1

b=counts.values()
m=max(b)

for k,v in counts.items():
    if v==m:
        c=c+' '+str(k)
        
print('众数是:{}'.format(c))

或者用列表表示c:

from random import*
#seed(10079)
counts={}
a=[randint(100,200) for _ in range(1000)]
c=[]

for i in a:
    counts[i]=counts.get(i,0)+1

b=counts.values()
m=max(b)

for k,v in counts.items():
    if v==m:
        c.append(str(k))
        
print('众数是:{}'.format(' '.join(c)))