繁体   English   中英

C#随机数生成器

[英]C# Random Number Generator

我正在使用以下代码生成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);
}

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

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);

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

您的随机数生成器是dc2pc1pc2 您的随机数是dealCard2playerCard1playerCard2

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

为了简单起见,只取一个:

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

在这里,您已经将dc1 (这是一个Random对象)转换为字符串,而不是dealCard1 (这是随机数)。

txtDC1.Text = Convert.ToString(dealCard1);

等等。

(另外请注意,如果这里的想法是从52张纸牌中挑选一张,例如使用扑克牌组,则表示您不是在检查自己是否拥有一张或多张完全相同的纸牌,这可能是也可能不是一个问题)。

您将Random对象本身放入文本块,因此为“ System.Random”。

您的代码应为:

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

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

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

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

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

如果必须在每个事件上都创建一个新实例,则可以考虑向随机数添加一个种子,因为事件的快速连续可能会导致Random实例使用相同的种子进行播种,从而导致重复的值。

我以前对此很麻烦,而我的错误是我有太多随机实例。 因此,通过查看您的代码,我看到了不止一个。 我将更改编码以仅具有一个随机实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM