c#中的随机数

时间:2010-10-15 16:52:08

标签: c#

我想点击按钮并选择1到20之间的数字,然后在lblPickFive_1.Text中显示结果 当我尝试运行它时,我在整个地方都会遇到错误。 错误1字段初始值设定项无法引用非静态字段,方法或属性'LotteryTickets.Form1.random'

警告4检测到无法访问的代码

    string random;
        string num = random.Next();

        string num = random.Next(20);



    private int RandomNumber(int min, int max)
    {
    Random random = new Random();
    return random.Next(min, max); 
    lblPickFive_1.Text=num;
    }        
 }

4 个答案:

答案 0 :(得分:1)

请改为尝试:

private void SetRandomNumber(int min, int max)
{
   int num = new Random().Next(min, max); 
   lblPickFive_1.Text=num;
}    

答案 1 :(得分:0)

从它的外观来看,这些是原因:

  

错误1字段初始值设定项不能   引用非静态字段,   方法或财产   'LotteryTickets.Form1.random'

是因为您的方法是私有的,而您正试图从外部调用它

private int RandomNumber(int min, int max)

改为internalpublic

  

警告4检测到无法访问的代码

是因为您在设置文本框之前返回;

return random.Next(min, max); 
lblPickFive_1.Text=num; // This will never get reached

如果是我,我会像这样编写Random方法:

 internal static int RandomNumber(int min, int max)
 {
    Random random = new Random(DateTime.Now.Millisecond); // Use a seed to reduce the chance of re-ocurring numbers
    return random.Next(min, max); 
 }       

并且可能会在RandomHelper类中而不是在表单本身上。

答案 2 :(得分:0)

您对random.Next()的调用超出了声明随机对象的范围。然后,您将获得无法访问的代码,因为在将标签文本设置为num之前返回。

试试这个:

  class MyClass
  {
    Random random;
    public MyClass()
    {
      random = new Random(Guid.NewGuid().GetHashCode());
    }

    public void RandomNumber(int min, int max)
    {
      lblPickFive_1.Text = random.Next(min, max).ToString();      
    }
  }

答案 3 :(得分:-1)

你们大多数人都错了......

首先,您需要只有一个Random个实例,因为它们都会以相同的数字播种...

其次,正如其中一些人所说,代码lblPickFive_1.Text=num;永远不会被调用。将方法改为:

Random rand = new Random();

private int RandomNumber(int min, int max)
{
    int i = rand.Next(min, max);
    lblPickFive_1.Text=i;
    return i;
}