我正在尝试制作一个骰子程序。因此,当您单击掷骰时,它应该掷两个骰子并将总和相加,这就是您掷出的数字。我需要一些有关此 Windows 窗体程序的帮助。这是一些代码:
private int totalRolls;
private void btnRoll_Click(object sender, EventArgs e)
{
totalRolls += 1;
System.Random Int1 = new System.Random((int)System.DateTime.Now.Ticks);
System.Random Int2 = new System.Random((int)System.DateTime.Now.Ticks);
int randomInteger1 = Int1.Next(1, 7);
int randomInteger2 = Int2.Next(1, 7);
lblNumberRolled.Text = randomInteger1.ToString() + randomInteger2.ToString();
lblNumberRolled.Text
的代码我认为不对。这是将两个骰子相加以获得最终骰子总数的代码。但是当我运行它时,它会显示 30 之类的大数字。它不是添加什么的。
最高总和应为 12。
最佳答案
将您的代码更改为:
lblNumberRolled.Text = (randomInteger1 + randomInteger2).ToString();
解释:
randomInteger1.ToString() + randomInteger2.ToString()
当 randomInteger1 为 2 时,您将其制成一个字符串,它将为“2”+ 当 randominterger2 为 1 时,在 String 之后为“1”。 当您使用 + 连接这些字符串时,您会执行“2”+“1”,这是 21 而不是 3。
您的代码还有另一个问题: Ticks 对象的类型为 long,您将其转换为 int。所以你丢失了信息。这导致您将在大多数情况下为两个整数获得相同的种子。这导致您在大多数情况下会得到相同的随机整数。
在你的随机调用之间放置一个 Thread.Sleep(20) 将修复它:
System.Random Int1 = new System.Random((int)System.DateTime.Now.Ticks);
Thread.Sleep(20);
System.Random Int2 = new System.Random((int)System.DateTime.Now.Ticks);
关于c# - 骰子程序计算不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19557736/