随机数生成器显示在文本框中

时间:2013-01-09 16:03:39

标签: c# random numbers generator

我有点困在我正在做的事情上......我有一个带有不同按钮的Windows窗体应用程序,每个按钮应该做不同的事情。现在我的问题是:

在一个按钮上,当我按下它时,它应该生成随机数字(例如0-1000)并在文本框中显示数字,我也在程序中显示。我尝试在按钮上执行此代码:

private void button5_Click(object sender, EventArgs e)
{
    Random slumpGenerator = new Random(); int tal; 
    tal = slumpGenerator.Next(); 
}

但遗憾的是,文本框中没有显示数字。而且我认为可能是因为我没有提到数字应该显示在我的文本框中,还有任何想法?

5 个答案:

答案 0 :(得分:6)

确定 - 您没有在文本框中设置任何属性。你忽略了新生成的随机数。你需要这样的东西:

Random slumpGenerator = new Random();
// Or whatever limits you want... Next() returns a double
int tal = slumpGenerator.Next(0, 100);
textBox.Text = tal.ToString();

请注意,一般来说,创建许多Random个实例并不是一个坏主意 - 但这并不像将其设为static变量那么简单...有关详细信息,请参阅我的article on randomness。还要注意我是如何更改代码以声明变量并在单个语句中为其赋值 - 这通常比在一个语句中声明然后稍后为其赋值更好。

答案 1 :(得分:1)

private void button5_Click(object sender, EventArgs e)
{
    Random slumpGenerator = new Random(); 
    int tal = slumpGenerator.Next(0, 1000); 
    txtBxName.Text = tal.ToString();
}
  1. 您需要为“Random”.Next()方法添加最小值和最大值。
  2. 您没有在任何地方设置文本框文本值。

答案 2 :(得分:1)

您可以使用加密服务提供商提供的实现来考虑RNGCryptoServiceProvider 线程安全类(System.Security.Cryptography命名空间),它是加密随机数生成器(RNG)。

实现比使用System.Random类要困难一些。

示例实现如下:

using System.Security.Cryptography;
...

private RNGCryptoServiceProvider rnd = new RNGCryptoServiceProvider();

private int NextInt32(int maxValue)
{
    byte[] intBytes = new byte[4];
    rnd.GetBytes(intBytes);
    return Math.Abs(BitConverter.ToInt32(intBytes, 0)) % maxValue + 1;
}

// And your method with textBox
private void button5_Click(object sender, EventArgs e)
{
    textBox.Text = NextInt32(1000).ToString(); 
}

您可以在问题Pros and cons of RNGCryptoServiceProvider

中详细了解RNGCryptoServiceProvider

答案 3 :(得分:1)

您需要在代码中添加一些内容。以下是您想要的全部代码......

private void button5_Click(object sender, EventArgs e)
{
    Random slumpGenerator = new Random(); int tal;
    tal = slumpGenerator.Next(0, 1000);
    textBox.Text = tal.ToString();
}

您必须设置希望它生成的最小值和最大值。您还必须将最小值1置于您真正想要生成的值之下。即如果要生成10到20之间的数字,则需要将最小值设置为9,将最大值设置为20。

您还需要将值放入文本框等中以显示它。由于它是一个int,并且文本框的文本采用String格式,因此您需要将其转换为代码末尾的String.ToString()

我知道这个答案很晚,但以后可能会帮到你!

答案 4 :(得分:1)

                       **Random Number Generation in C#.Net**

在编写代码之前添加两个名称空间

*使用System.Security;

使用System.Security.Cryptography; *

<强>代码:

复制并将以下代码放在按钮

RNGCryptoServiceProvider xx = new RNGCryptoServiceProvider();
byte [] random_number=new  byte [512];
xx.GetBytes(random_number);
foreach (var i in random_number)
{
    textBox1.Text = i.ToString();
}

有关c#.net的更多详细信息,请参阅我的blogspot:mbthangamalai.blogspot.in