|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 冬雪雪冬 于 2016-2-4 11:02 编辑
本次练习大家答题踊跃,很多人给出了优秀的答案。
这次评判的原则是在符合题意的答案中看谁的尝试次数最少,谁的用时最短。答案正确的结果如下:
ID | 尝试次数 | 用时 | zooo | 5.807
| 0.7647
| DingRan | 5.803 | 0.4479
| wei_Y | 8.367
| 2.165
| Lnan95 | 6.063
| 0.954
| USTC-ssj |
| 1.495
| 落殇飞羽 | 5.688
| 0.5527
| shuofxz | 8.989
| 1.973
| FDMa | 5.808
| 0.4063
| 第一个答对的是 @zooo
结果最佳的是 @DingRan 和 @FDMa
@零度非安全 的作业也非常优秀,采用2分法,并给出了详尽的注释。但出现了一个小BUG,他也在比赛结束后发现了并改正,为确保对其他参赛者的公平,只好忍痛割爱了。对他这种认真精神也将予以鼓励。
本次活动的结果请大家点评,如果有异议请于2.3 22:00前提出。
===========================================================
最终结果,最佳奖 @DingRan 和 @FDMa,
第一答对奖 @zooo
第一个给出答案的是 @debi999
- import random
- #新建空列表,用于存放猜数字的记数
- count=[]
- #定义猜数字函数
- def funC():
- a=int(random.uniform(1,100))
- b=int(random.uniform(1,100))
- for i in range(1,11):
- if b==a:
- break
- else:
- b=int(random.uniform(1,100))
- count.append(int(i))
- #循环执行100000次
- for j in range(0,100000):
- funC()
- #定义猜中次数的计数器
- a1=0
- a2=0
- a3=0
- a4=0
- a5=0
- a6=0
- a7=0
- a8=0
- a9=0
- list1=[]
- #判断猜中次数
- for m in range(len(count)):
- if count[m]==1:
- a1+=1
- elif count[m]==2:
- a2+=1
- elif count[m]==3:
- a3+=1
- elif count[m]==4:
- a4+=1
- elif count[m]==5:
- a5+=1
- elif count[m]==6:
- a6+=1
- elif count[m]==7:
- a7+=1
- elif count[m]==8:
- a8+=1
- elif count[m]==9:
- a9+=1
- list1.extend([a1,a2,a3,a4,a5,a6,a7,a8,a9])
- #计算平均值
- sum= (a1+a2+a3+a4+a5+a6+a7+a8+a9)
- pjz=sum/(max(list1))
- #输出
- print('尝试 1 次猜中的有 %d 轮'%a1)
- print('尝试 2 次猜中的有 %d 轮'%a2)
- print('尝试 3 次猜中的有 %d 轮'%a3)
- print('尝试 4 次猜中的有 %d 轮'%a4)
- print('尝试 5 次猜中的有 %d 轮'%a5)
- print('尝试 6 次猜中的有 %d 轮'%a6)
- print('尝试 7 次猜中的有 %d 轮'%a7)
- print('尝试 8 次猜中的有 %d 轮'%a8)
- print('尝试 9 次猜中的有 %d 轮'%a9)
- print ('平均 %.3f 次猜中'%pjz)
复制代码
很遗憾虽然整体思路是对的,但有些错误没有完成题意的要求。
1.用两个随机数来确定答案和猜数,并反复随机猜数来使两者相等,这样效率不高,且只比较10次无法保证每轮都能猜出答案。
2.用random.uniform函数得到的是实数,虽然用int取整,一是效率低,二是数字不是完全随机分布,出现100的可能性太低。
|
评分
-
查看全部评分
|