设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4464|回复: 5
打印 上一主题 下一主题

[论坛活动] 【已经结束】【周常任务】R考场(第三期)

[复制链接]

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

1
发表于 2015-1-1 11:19:41 | 显示全部楼层
本帖最后由 taroxd 于 2015-1-1 13:15 编辑

三/2

WWW_BBB
WWWB_BB
WW_BWBB
W_WBWBB
WBW_WBB
WBWBW_B
WBWBWB_
WBWB_BW
WB_BWBW
_BWBWBW
B_WBWBW
BBW_WBW
BBWBW_W
BBWB_WW
BB_BWWW
BBB_WWW

---

三/3

0 0
5 0
0 5
5 5
2 8
2 0
0 2
5 2
0 7
5 7
4 8
4 0

---

RUBY 代码复制
  1. require 'mathn'
  2.  
  3. # 排列数
  4. def permutation(m, n)
  5.   return 0 if m < n
  6.   ((m-n+1)..m).inject(:*)
  7. end
  8.  
  9. # 第 n 号位的分数是 score 时,他比前 n - 1 个人都要优秀的概率
  10. def highest(score, n)
  11.   permutation(score - 1, n - 1) / ( # 前 n - 1 个人分数都比 score 低的排列数除以
  12.     permutation(99, n - 1))          # 前 n - 1 个人所有的排列数
  13. end
  14.  
  15. # n + 1 号学生比前 n 个学生都优秀,且 n + 1 号学生不是最优秀的学生的概率
  16. def reject(n)
  17.   (1..99).inject(0) { |sum, score| sum + highest(score, n + 1) } / 100
  18. end
  19.  
  20. expectations = {100=>0.01r, 99=>0.01r} # n = 99,100 时,概率为 0.01
  21.  
  22. 98.downto(1) do |n|
  23.   expectations[n] = expectations[n + 1] * (1 - reject(n)) + 0.01r
  24. end
  25.  
  26. expectations.reverse_each do |n, e|
  27.   puts "#{n} => #{e.to_f}"
  28. end


结果这样算出来是 33,不知道哪里算错了

点评

算法题随机模拟所以说是降低难度了吧……这里的n要取100/e,约为37左右  发表于 2015-1-1 12:18

评分

参与人数 1星屑 +150 梦石 +1 收起 理由
RyanBern + 150 + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-3 10:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表