我有一个名为enemy
的自定义类列表(名为enemyList
)。我使用foreach循环。在里面,我生成一个介于1到200,000之间的随机数。然后我将它保存到foreach循环之外的列表中:
try
{
List<int> randoms = new List<int>();
foreach (enemy m in enemyList)
{
Random r = new Random();
int i = r.Next(1, 2000);
randoms.Add(i);
}
然后,当完成时,在foreach循环下,我这样做:
int highest = randoms.Max();
int rate = -1;
接下来,我使用另一个foreach循环来确定randoms
中哪个值等于最高数。
foreach (int number in randoms)
{
rate++;
if (highest == number)
{
return rate;
}
}
}
catch (Exception)
{
return 0;
}
当我运行它时,它会显示哪个项目最高,(例如:如果它是randoms
列表中的第一个,则显示0
)。但由于某种原因,它总是返回0.但是如果我浏览代码,它就能正常工作。任何人都可以解释为什么会这样,所以我可以解决它吗?
答案 0 :(得分:-3)
你是否想从敌人名单中选择一个随机物品?
如果是这样,你可以这样做:
var rng = new Random();
var randomEnemy = enemyList[ rng.Next( enemyList.Count ) ];
如果您正在快速执行此操作,则需要在其他位置声明随机数生成器,以便它不会重新播种并不断选择相同的值。