C#随机数生成器

时间:2014-05-07 23:34:38

标签: c#

我正在使用以下代码生成4个随机数,但每次我尝试将它们作为文本块中的“system.random”出现。帮助任何人?谢谢!! :)

private void Button_Click_1(object sender, RoutedEventArgs e)        
{           
    Random dc1 = new Random();
    int dealCard1 = dc1.Next(52);

    Random dc2 = new Random();
    int dealCard2 = dc2.Next(52);

    Random pc1 = new Random();
    int playerCard1 = pc1.Next(52);

    Random pc2 = new Random();
    int playerCard2 = pc2.Next(52);

    txtDC1.Text = Convert.ToString(dc1);
    txtDC2.Text = Convert.ToString(dc2);
    txtPC1.Text = Convert.ToString(pc1);
    txtPC2.Text = Convert.ToString(pc2);
}

6 个答案:

答案 0 :(得分:3)

首先,您只需要一个随机实例:

Random dc1 = new Random();
int dealCard1 = dc1.Next(52);
int dealCard2 = dc1.Next(52);
int playerCard1 = dc1.Next(52);
int playerCard2 = dc1.Next(52);

错误是因为您没有报告数字:

txtDC1.Text = Convert.ToString(dealCard1);
txtDC2.Text = Convert.ToString(dealCard2);
txtPC1.Text = Convert.ToString(playerCard1);
txtPC2.Text = Convert.ToString(playerCard2);

答案 1 :(得分:1)

您正在转换随机数生成器,而不是随机数。

您的随机数生成器为dc2pc1pc2。您的随机数为dealCard2playerCard1playerCard2

从这里你应该能够解决问题。

答案 2 :(得分:1)

为简单起见,只需一个:

Random dc1 = new Random();
int dealCard1 = dc1.Next(52);
txtDC1.Text = Convert.ToString(dc1);

此处您已将dc1Random个对象转换为字符串,而不是dealCard1,这是随机数。

txtDC1.Text = Convert.ToString(dealCard1);

等等。

(另请注意,如果这里的想法是挑选52张牌,就像扑克牌一样,你不能检查你是否拥有多张完全相同的牌,这可能是也可能不是问题。)

答案 3 :(得分:0)

您将Random对象本身放入文本块中,因此" System.Random"。

您的代码应为:

txtDC1.Text = Convert.ToString(dealCard1);
txtDC2.Text = Convert.ToString(dealCard2);
txtPC1.Text = Convert.ToString(playerCard1);
txtPC2.Text = Convert.ToString(playerCard2);

您每次都不应该重新创建Random实例。只需使用一个(理想情况下作为类级变量)。这可以防止使用(几乎)相同的种子值(基于系统时间)重新播种Random对象。就像你的每一个"随机"数字可能完全相同!

答案 4 :(得分:0)

首先,你要转换错误的变量,你想要的是

txtDC1.Text = Convert.ToString(dealCard1);
txtDC2.Text = Convert.ToString(dealCard2);
txtPC1.Text = Convert.ToString(playerCard1);
txtPC2.Text = Convert.ToString(playerCard2);

每次调用click事件时,还要尽量避免创建随机的新实例。考虑创建一个可以重用的随机实例。

如果必须在每个事件中创建一个新实例,那么考虑向随机添加一个种子,因为快速连续的事件可能导致Random实例用相同的种子播种,从而导致重复值。

答案 5 :(得分:0)

我之前遇到过这个问题,我遇到的错误是我有太多的随机实例。因此,通过查看您的代码,我发现您不止一个。我会改变编码只有一个随机实例。