我想在c#中制作一台老虎机,但有一个模糊的问题让我困惑。尝试将随机数组数据添加到列表时奇怪的代码失败<Bitmap>
我试图从Bitmap[]
一些随机数据添加到List<Bitmap>
:
public void Gamble()
{
for (int i = 0; i < 3; i++)
{
int r = (int)(new Random().NextDouble() * (fruits.Length - 1));
GambledFruits.Add(fruits[r]);
}
}
出于某种原因,List<Bitmap>
将第一int r
3倍。
但是,当我加入MessageBox
这样的:
public void Gamble()
{
for (int i = 0; i < 3; i++)
{
int r = (int)(new Random().NextDouble() * (fruits.Length - 1));
MessageBox.Show(r.ToString());
GambledFruits.Add(fruits[r]);
}
}
它显示了我3件不同的随机数,并增加了3个不同的号码,而不是3个数量相等。
在每次迭代中使用相同的'''Random'''对象,而不是新的对象实例。 –
你正在使用'Random' - 你应该只构造一次,因为它使用当前时间作为种子值(我认为,到最接近的毫秒),所以它会重复值。 – Dai
这是完整的代码。 ?列表在哪里使用。 –
user2526236