Advertisement
Guest User

uchihime-gacha.rb

a guest
Jan 19th, 2014
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.37 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. class String
  4.   def for_2ch
  5.     self.gsub(/ {2,}/) do |spaces|
  6.       len = spaces.length
  7.       if len.even?
  8.         " " * (len / 2)
  9.       else
  10.         (" " * (len / 2)) + " "
  11.       end
  12.     end
  13.   end
  14. end
  15.  
  16. # config me
  17. sr_per = 3.00r
  18. hr_per = 17.80r
  19. set_price = 5800r
  20. set_stars = 6600r
  21.  
  22. yen_per_star = set_price / set_stars
  23. header = <<-EOT
  24. 10000人がガチャ引いたときの回数毎のSR・HRハズレ人数
  25.   SR確率#{sr_per.to_f.round(2)}%、HR確率#{hr_per.to_f.round(2)}%、星くず1個#{yen_per_star.to_f.round(2)}円(#{set_price.to_i}円/#{set_stars.to_i}個)で計算
  26.  
  27. *    連(回数    金額): SR率(ハズレ) HR率(ハズレ)
  28.  
  29. EOT
  30. puts header.for_2ch
  31.  
  32. sr_win_probability = sr_per / 100
  33. sr_lose_probability = 1 - sr_win_probability
  34. hr_win_probability = hr_per / 100
  35. hr_lose_probability = 1 - hr_win_probability
  36. (1..30).each do |i|
  37.   times = i * 11
  38.   sr_win = (1 - (sr_lose_probability ** times))
  39.   sr_lose = 1 - sr_win
  40.   hr_win = (1 - (hr_lose_probability ** times))
  41.   hr_lose = 1 - hr_win
  42.   cost = 4000 * yen_per_star * i
  43.   str = "* %3d連(x%2d %6d円): %3d%%(%4d人) %3d%%(%4d人)" % [
  44.     times,
  45.     i,
  46.     cost.to_f.round,
  47.     (sr_win * 100).to_f.round,
  48.     (sr_lose * 10000).to_f.round,
  49.     (hr_win * 100).to_f.round,
  50.     (hr_lose * 10000).to_f.round,
  51.   ]
  52.   puts str.for_2ch
  53. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement