【问题标题】:random number generator to be displayed on a text box要在文本框中显示的随机数生成器
【发布时间】:2013-01-09 16:03:38
【问题描述】:

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

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

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

但不幸的是,文本框上没有显示数字。我认为这可能是因为我没有提到数字应该显示在我的文本框中,有什么想法吗?

【问题讨论】:

  • 您生成了一个数字,但您不会将数字(作为字符串)影响到文本框的“文本”属性
  • 我觉得一门好的初学者编程课程是为了...

标签: c# random numbers generator


【解决方案1】:

当然,您没有在文本框上设置任何属性。您忽略了新生成的随机数。你需要类似的东西:

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。另请注意我如何更改代码以声明一个变量并在单个语句中为其分配一个值 - 这通常比在一个语句中声明然后稍后为其分配一个值更可取。

【讨论】:

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

    【讨论】:

      【解决方案3】:

      您可以考虑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(); 
      }
      

      你可以阅读更多关于RNGCryptoServiceProvider的问题:Pros and cons of RNGCryptoServiceProvider

      【讨论】:

        【解决方案4】:

        您需要在代码中添加一些内容。这是您想要的完整代码...

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

        我知道这个答案来晚了,但以后可能会对您有所帮助!

        【讨论】:

          【解决方案5】:
                                 **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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-06-28
            • 1970-01-01
            • 2011-01-10
            • 1970-01-01
            • 2021-09-14
            • 2017-03-30
            • 2015-01-25
            相关资源
            最近更新 更多