Four tiers per brand: RZX 60/70/80/90 and RZ 70/80/800/900
Model name is display only; performance and price follow brand and tier. Tier physical traits: power pins 6/8/8/8+8 and fans 1/2/3/3. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0ba2845609
commit
202bdbbfbc
7 files changed
+29
-22
No files matched your search
@@ -112,7 +112,7 @@ internal static class Program
|
||||
|
||||
Test("显卡:型号、显示单位、健康度与算力衰减", () =>
|
||||
{
|
||||
Check(Hardware.Specs["RZX70"].DisplayHash == 50 && Hardware.Specs["RZ6800"].DisplayHash == 40, "RZX70 50 MH/s,RZ6800 40 MH/s");
|
||||
Check(Hardware.Specs["RZX70"].DisplayHash == 50 && Hardware.Specs["RZ80"].DisplayHash == 40, "RZX70 50 MH/s,RZ80 40 MH/s");
|
||||
Check(Near(Hardware.Specs["M3"].DisplayHash, 3, 1e-9), "RatDigg M3 3 GH/s");
|
||||
var u = new Unit { Model = "RZX70" };
|
||||
Check(u.Hash(ModuleBonus.None) == 5, "满健康 5 H");
|
||||
@@ -122,7 +122,7 @@ internal static class Program
|
||||
Check(Near(u.Hash(ModuleBonus.None), 3.0, 1e-9), "健康 0:60%");
|
||||
Check(Near(new Unit { Model = "RZX70" }.Hash(ModuleBonus.From(36, -44, 0)), 5 * 1.09, 1e-9), "一个超频模块(+36 性能):算力 +9%");
|
||||
var fake = new Unit { Model = "RZX90", FakeOf = "RZX60" };
|
||||
Check(fake.Hash(ModuleBonus.None) == 1.5 && fake.Label.Model == "RZX90", "假卡标着 RZX90,算力按 RZX60");
|
||||
Check(fake.Hash(ModuleBonus.None) == 1.0 && fake.Label.Model == "RZX90", "假卡标着 RZX90,算力按 RZX60");
|
||||
Check(Near(fake.DeathChance(ModuleBonus.None), new Unit { Model = "RZX90" }.DeathChance(ModuleBonus.None) * 2, 1e-12), "假卡暴毙率 ×2");
|
||||
var r = new Unit { Model = "RZX70", Health = 50 };
|
||||
Check(r.Refurbish() && r.Health == 80 && !r.Refurbish(), "翻新一次 +30,不能再翻新");
|
||||
@@ -152,7 +152,7 @@ internal static class Program
|
||||
Check(Near(fakeSigns / (double)n, 1.65, 0.12), $"假卡平均 1.65 处破绽:{fakeSigns / (double)n:0.00}");
|
||||
Check(oldWorn > newWorn * 1.8, $"低健康度的真卡明显更旧:{oldWorn / (double)n:P0} 对 {newWorn / (double)n:P0}");
|
||||
Check(seen.Count >= 120, $"抽样见到 {seen.Count} 种不同组合(上限 243)");
|
||||
Check(Hardware.Specs["RZX50"].Price == 220 && Hardware.Specs["RZX90"].Price == 5000 && Hardware.Specs["RZ7900"].Price == 4000, "价格已抬高到约 1.8 倍");
|
||||
Check(Hardware.Specs["RZX60"].Price == 220 && Hardware.Specs["RZX90"].Price == 5000 && Hardware.Specs["RZ900"].Price == 4000, "价格已抬高到约 1.8 倍");
|
||||
var u = new Unit { Model = "RZX90", FakeOf = "RZX60", Health = 80 };
|
||||
Check(CardValue.True(u) == CardValue.Of("RZX60", 80) && CardValue.Quoted(u, 80) == CardValue.Of("RZX90", 80), "真实价值按芯片型号,标称价按标称型号");
|
||||
Check(CardValue.Quoted(u, 80) > CardValue.True(u) * 8, $"假 RZX 90 的标称价 {CardValue.Quoted(u, 80)} 远高于真值 {CardValue.True(u)}");
|
||||
@@ -218,7 +218,7 @@ internal static class Program
|
||||
var p = Run("RZX70", ModuleBonus.None, 20000);
|
||||
Check(Near(p[0], 0.11, 0.02) && Near(p[1], 0.53, 0.02) && Near(p[2], 0.84, 0.02),
|
||||
$"Probidia 11% / 53% / 84%:{p[0]:P0} / {p[1]:P0} / {p[2]:P0}");
|
||||
var q = Run("RZ6800", ModuleBonus.None, 20000);
|
||||
var q = Run("RZ80", ModuleBonus.None, 20000);
|
||||
Check(Near(q[0], 0.20, 0.02) && Near(q[1], 0.76, 0.02) && Near(q[2], 0.95, 0.02),
|
||||
$"PMD 20% / 76% / 95%:{q[0]:P0} / {q[1]:P0} / {q[2]:P0}");
|
||||
});
|
||||
@@ -358,11 +358,11 @@ internal static class Program
|
||||
Check(fakes > cards * 0.2 && fakes < cards * 0.5, $"骗子的假卡占两成多(入门卡便宜到没法冒充):{fakes}/{cards}");
|
||||
Check(UsedDealers.Pool(5).All(m => Dealer.Basic.Contains(m)) && UsedDealers.Pool(30).Contains("RZX90"), "型号按天数放开");
|
||||
// 标签:假 RZX 70(芯片 RZX 50)、健康 60、风扇缺角、金手指氧化、丝印印着真实型号
|
||||
var u = new Unit { Model = "RZX70", FakeOf = "RZX50", Health = 60, Look = new CardLook { Fan = 2, Fingers = 2, Print = 1 } };
|
||||
var u = new Unit { Model = "RZX70", FakeOf = "RZX60", Health = 60, Look = new CardLook { Fan = 2, Fingers = 2, Print = 1 } };
|
||||
var claim = CardLabels.DealerClaim(u, DealerKind.Scammer, new Rng(3));
|
||||
Check(claim.Model == "RZX70" && claim.Fan == 0 && claim.Fingers == 0 && claim.Print == 0, "骗子的说法:标称型号,外观全是没问题");
|
||||
long hidden = CardLabels.Value(u, claim, 0), real = CardValue.True(u);
|
||||
Check(hidden == CardValue.Of("RZX70", 60) && real == (long)Math.Round(CardValue.Of("RZX50", 60) * 0.76), "没指出时按说法算(标称型号满价),真实价值按芯片和外观算");
|
||||
Check(hidden == CardValue.Of("RZX70", 60) && real == (long)Math.Round(CardValue.Of("RZX60", 60) * 0.76), "没指出时按说法算(标称型号满价),真实价值按芯片和外观算");
|
||||
int ex = 0;
|
||||
Check(CardLabels.Point(u, claim, CardLabels.RowFan, ref ex) == 1 && CardLabels.Value(u, claim, ex) == (long)Math.Round(CardValue.Of("RZX70", 60) * 0.88), "指出风扇缺角:扣 12%");
|
||||
Check(CardLabels.Point(u, claim, CardLabels.RowPrint, ref ex) == 2 && (ex & CardLabels.RowSpec) != 0, "指出丝印印着真实型号:拆穿假货,型号标签一并拆穿");
|
||||
|
||||
Reference in new issue
Block a user