0
我的随机部分代码是:C# - 选择随机项的清单,概率在开始下降1元几次
public Gun GetRandomGun(IEnumerable<Gun> sequence, Random random)
{
int totalWeight = sequence.Sum(p => p.Probability);
int weightedPick = random.Next(totalWeight);
foreach (var item in sequence)
{
if (weightedPick < item.Probability)
{
return item;
}
weightedPick -= item.Probability;
}
throw new InvalidOperationException("List must have changed...");
所以我试图让随机枪概率,你可以看到。 因此,当我在开始时打开程序时,我几次调用该命令时,我得到的是相同的枪,然后该程序给我随机枪,有时甚至给出相同的枪x 2 我该如何解决它? 我的XML配置:
<Gun>
<GunID>116</GunID>
<Probability>18</Probability>
</Gun>
<Gun>
<GunID>519</GunID>
<Probability>5</Probability>
</Gun>
<Gun>
<GunID>363</GunID>
<Probability>25</Probability>
</Gun>
<Gun>
<GunID>126</GunID>
<Probability>10</Probability>
</Gun>
<Gun>
<GunID>112</GunID>
<Probability>15</Probability>
</Gun>
<Gun>
<GunID>297</GunID>
<Probability>5</Probability>
</Gun>
<Gun>
<GunID>300</GunID>
<Probability>5</Probability>
</Gun>
<Gun>
<GunID>1041</GunID>
<Probability>25</Probability>
</Gun>
<Gun>
<GunID>1037</GunID>
<Probability>25</Probability>
</Gun>
所以对于当我启动程序并调用命令几次,我只得到ID 1041例如和几次后,我开始变得随机枪,例如有时当我打电话给命令2次时,我得到的是相同的枪,但这不重要 请帮我修复这个错误,谢谢!
你是怎么调用这个函数的?你可以显示“随机”在哪里初始化? – degant