【发布时间】:2013-10-23 10:24:56
【问题描述】:
我确定这是微不足道的,但我无法弄清楚。我的老师刚刚向我们展示了如何使用 .Next(); 创建随机数。昨晚的声明,我被告知要写一个刺激两个掷骰子并比较它们的作业。我写出了代码,一切正常,直到我将 dice2 添加到我的 console.writeline 中。我在这里想念什么?
添加 dice2 后出现以下错误,删除 dice2 后它们全部消失。
- ) 预期
- ;预计
- 无效的表达式术语')'
- 只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句。
这是我的代码
Random m = new Random();
Random m1 = new Random();
string again;
do
{
int dice1 = m.Next(1, 6);
int dice2 = m1.Next(1, 6);
if (dice1 == 6 && dice2 == 6)
{
Console.WriteLine("You rolled boxcars");
}
else if (dice1 == 1 && dice2 == 1)
{
Console.WriteLine("You rolled snake-eyes");
}
else
{
Console.WriteLine("You rolled a {0} and a {1}", dice1 dice2);
}
Console.WriteLine("Again? (y/n)");
again = Console.ReadLine();
} while (again == "y");
编辑
添加逗号后,我注意到我得到了相同的值,所以在做了一些研究后,我删除了 Random m1 = new Random();并更改了 int dice2 = m1.Next(1, 6);到 int dice2 = m.Next(1, 6);它奏效了。然后我意识到它没有给我任何 6 个值,所以我将其更改为 (1, 7) 并且效果很好
【问题讨论】:
-
因为您同时创建了两个
Random实例,它们几乎总是具有相同的种子,因此会生成完全相同的随机数序列,因此您的两个值将始终匹配。与其创建两个随机数生成器并从每个生成器中获取一个值,不如只创建一个随机数生成器并要求它提供两个随机数。 -
是的,我刚刚注意到了。我删除了 Random m1 = new Random();并更改了 int dice2 = m1.Next(1, 6);到 int dice2 = m.Next(1, 6);它工作得很好。然后我意识到它没有给我任何 6 个值,所以我将其更改为 (1, 7) 并且效果很好。