C# 将随机计算的int变量值放入arrayList

C# 将随机计算的int变量值放入arrayList,c#,C#,我是C#的新手。是否有任何方法可以将roll1变量值放入rollsarrayList?我是否需要将此部分放在与main分开的方法中 Random diceRoll1 = new Random(); int throw1 = diceRoll1.Next(1, 18); Random diceRoll2 = new Random(); int throw2 = diceRoll2.Next(1, 12); Random diceRoll3 = new Random(); int thro

我是C#的新手。是否有任何方法可以将
roll1
变量值放入
rolls
arrayList?我是否需要将此部分放在与main分开的方法中

Random diceRoll1 = new Random();

int throw1 = diceRoll1.Next(1, 18);

Random diceRoll2 = new Random();

int throw2 = diceRoll2.Next(1, 12);

Random diceRoll3 = new Random();

int throw3 = diceRoll3.Next(1, 6);

ArrayList rolls = new ArrayList();

int roll1 = Console.WriteLine(throw1 + throw2 + throw3);
Console.ReadLine();

您可以初始化int类型的列表,并将每个元素添加到该列表中。添加所有元素后,可以循环浏览该列表并打印它。

首先要注意的是,您不需要每次需要一个随机数时都创建一个新的
随机数
Random
是从当前时间开始播种的,因此很可能代码运行速度足够快,可以得到三个相同的随机数。至于向列表中添加值,有几个不同的选项。如果总是要将具有三个分组值的项放入列表中,则可以使用
元组。下面是一个例子:

Random rnd = new Random();
int throw1 = rnd.Next(1, 18);
int throw2 = rnd.Next(1, 12);
int throw3 = rnd.Next(1, 6);

List<Tuple<int, int, int>> rolls = new List<Tuple<int, int, int>>();
rolls.Add(new Tuple<int, int, int>(throw1, throw2, throw3));

我建议不要这样做的原因是
ArrayList
中的项是
object
s。也就是说,
ArrayList
不像
列表那样使用泛型。这意味着,每次访问列表中的项目并希望以某种方式使用它时,必须将其强制转换为所需的类型(例如
(int[])rolls[0]
)。如果更改列表项的类型,则需要清理和更改许多类型引用。

可能重复“否”,因为我想从变量中提取到值,然后尝试不需要每次创建新的随机变量,事实上不应该这样做。如果代码运行速度足够快,您可以三次获得相同的“随机”数,因为随机数生成器是从当前时间开始播种的。使用一个
Random
并对其调用
Next()
(使用args)三次。还有一点不清楚您在问什么。是否要将所有三个整数值分组为单个列表项?或者,您希望将它们作为单个列表项添加?这非常感谢。我可以循环这个过程在主列表中创建多个列表吗?@RowanReed确实可以。你不需要每次都创建一个新的列表,只要存储一个对它的引用并根据需要添加到列表中即可。顺便说一下,
Random
也是如此。你可以存储对它的引用,以避免每次都重新创建它。把这些数据拿回来显示怎么样?@AlexeiLevenkov谢谢你的帮助。我编辑了我的答案来解决这个问题。
List<List<int>> rolls = new List<List<int>>();
rolls.Add(new List<int> { throw1, throw2, throw3 });
List<int[]> rolls = new List<int[]>();
rolls.Add(new int[] { throw1, throw2, throw3 });
ArrayList rolls = new ArrayList();
rolls.Add(new int[] { throw1, throw2, throw3 }); // Or whatever other permutation you want