Skip to content

Instantly share code, notes, and snippets.

@dteoh
Last active June 23, 2021 12:15
Show Gist options
  • Save dteoh/ec87d0c638029c229c4aabaa8fb38bc3 to your computer and use it in GitHub Desktop.
Save dteoh/ec87d0c638029c229c4aabaa8fb38bc3 to your computer and use it in GitHub Desktop.
Genshin Impact: Albedo vs Mona crafting talent, who is better?

Genshin Impact: Albedo vs Mona crafting talent, who is better?

In Genshin Impact, you can craft materials of a given rank from three materials of the rank just below, eg. you can craft one gold book from three blue books.

Albedo has a talent where crafting a weapon ascension material has a 10% chance of giving double the output. Mona has a talent where crafting a weapon ascension material has a 25% chance of refunding a portion of the input materials.

If you have both characters, whose talent is better?

TL;DR: Albedo.

Analysis

To determine this, I decided to just simulate the crafting process. I will give both characters a starting amount of input materials, then let both of them craft as many of the next higher ranked material as possible. We can then calculate the conversion ratio to determine who is more efficient.

For this analysis, I will just compare the conversion of blue materials into purple materials. Each character will start with 1 million blue materials. I wrote the simulation in Ruby:

class Inventory
  attr_accessor :blue_mats, :purple_mats

  def initialize
    self.blue_mats = 0
    self.purple_mats = 0
  end

  def sufficient?
    blue_mats >= 3
  end
end

class Character
  attr_accessor :expenditure

  def initialize
    self.expenditure = 0
  end

  def craft_all!(inv)
    while inv.sufficient?
      craft! inv
    end
  end

  def craft!(inv)
    return unless inv.sufficient?

    inv.blue_mats -= 3
    inv.purple_mats += 1

    refund(inv) if refund_did_proc?

    self.expenditure += 350
  end

  def refund_did_proc?
    false
  end
end

class Mona < Character
  def refund_did_proc?
    rand(1..4) == 1
  end

  def refund(inv)
    inv.blue_mats += 1
  end
end

class Albedo < Character
  def refund_did_proc?
    rand(1..10) == 1
  end

  def refund(inv)
    inv.purple_mats += 1
  end
end

STARTING_MATS = 1_000_000

begin
  mona = Mona.new
  inv = Inventory.new
  inv.blue_mats = STARTING_MATS

  mona.craft_all! inv

  puts "Mona | purple mats = #{inv.purple_mats} | conversion = #{STARTING_MATS / inv.purple_mats.to_f} | avg cost = #{mona.expenditure / inv.purple_mats.to_f}"
end

begin
  albedo = Albedo.new
  inv = Inventory.new
  inv.blue_mats = STARTING_MATS

  albedo.craft_all! inv

  puts "Albedo | purple mats = #{inv.purple_mats} | conversion = #{STARTING_MATS / inv.purple_mats.to_f} | avg cost = #{albedo.expenditure / inv.purple_mats.to_f}"
end

The results:

Character Output (Purple materials) Conversion rate Average Mora per output
Albedo 366837 2.73 318.1
Mona (1 mat refund) 363659 2.75 350.0
Mona (1.5 mat refund) 380783 2.63 350.0
Mona (2 mat refund) 399743 2.51 350.0
Mona (2.5 mat refund) 420870 2.38 350.0
Mona (3 mat refund) 443601 2.25 350.0

Mona's talent doesn't make it clear how many materials get refunded, so I ran the simulation with several refund breakpoints. I don't have Mona so I don't know what is the normal refund amount. Assuming the talent works like Xingqui's, you will probably only see a refund of one material. I will just give my conclusion by comparing the "1 mat refund" against Albedo.

Conclusion

Albedo has the better talent overall. Albedo and Mona's conversion rate of blue mats into purple mats are quite similar, with a slight advantage going to Albedo. Where he wins is the average cost (Mora) to produce one purple material. It is cheaper in the long run to use Albedo when crafting materials.

For Mona's talent to be better than Albedo's, her average refund rate needs to be higher than 1.1 (this was determined empirically). At 1.1 refund, the conversion rate is about the same as Albedo's. At a higher average refund rate, she will create more purple outputs, and as long as you have the Mora, this translates to better returns on the resin spent to acquire the blue materials.

@Autofire
Copy link

I feel like a simpler way is just to look at the expected values and the probabilities, rather than messing around with this simulation stuff. If you multiply the results by their probabilities, and then add them up, you get the expected value. (Or at least I think so? It's been a while... yeah I think so.)

For Albedo, he has two outcomes:

  • 9/10s of the time, he gets 1 item.
  • 1/10 of the time, he gets 2 items.

His expected value is 1 * 9/10 + 2 * 1/10 = 11/10 = 1.1

For Mona, she also has two outcomes:

  • 3/4s of the time, she gets 1 item.
  • 1/4 of the time, she gets 4/3 items.

So her expected value is 1 * 3/4 + 4/3 * 1/4 = 13/12 = 1.083333

...wait actually I typed this up thinking it was the other way around. I did this calculation myself ages ago and came up with something else, but I guess I might have made a mistake? Huh... interesting...

@dteoh
Copy link
Author

dteoh commented Jun 23, 2021

Yes, you are completely right! Just doing the math with expected values is a much more straightforward analysis.

Happy to see that the empirical approach landed on the 1.1 EV :)

@Kayden-lolasery
Copy link

thank you for this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment