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.
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.
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.
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:
His expected value is 1 * 9/10 + 2 * 1/10 = 11/10 = 1.1
For Mona, she also has two outcomes:
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...