在bucle中设置/获取类属性不起作用

时间:2013-04-22 08:40:13

标签: c#

我正在尝试创建一个由空格分隔的1000行随机数的文件。这只是为了模拟乐透机器的数量。我创建了一个类,它将处理6 int数组中的六个数字的组合。

class cTicket
    {
        //Propiedades
        private volatile int[] p_nums;

    //Constructor
    public cTicket()
    {

    }

    //Metodos

    public void setTicket(int[] o_nums)
    {
        p_nums = o_nums;
    }

    public int[] getTicket()
    {
        return p_nums;
    }

}
像我说的那样,我需要创建一个1000行的组合,并以随机的方式选择6个数字的数组。所以在代码的某些方面我得到了这样的东西:

 private void button2_Click(object sender, EventArgs e)
    {

        for (int i = 0; i < 1000; i++) // Bucle de 1,000 combinaciones
        {
            objTicket.setTicket(objGenerador.generaNumero());
            //MessageBox.Show(integerArrayString(objTicket.getTicket()));
            write.WriteLine(i + integerArrayString(objTicket.getTicket()));
        }
        write.Close(); // Cierra operacion de escritura del archivo

    }

但这部分根本不起作用。它一遍又一遍地重复相同的6个数字组合。只改变整个过程的三倍,我注意到的另一件事是,如果我将输出放在消息框中,它就完美了。但是当我尝试将其写入文件时却没有。

我希望有人可以帮我解决问题。

感谢。

嗨,再次感谢,在阅读下面的帖子并获得更多文档后,我得到问题的结果,这就是我生成ramdom数字的方式,就像你说的那样。

public int [] generaNumero() {

        Random obj = new Random(); 
        int v_idx;
        for (int x = 0; x < 6; x++)
        {
            v_idx = x;
            v_array[x] = obj.Next(1, 38);

            while (v_idx >= 0)
            {
                if (v_array[x] == v_array[v_idx])
                {
                    v_array[x] = obj.Next(1, 38);
                    v_idx = x;
                }
                v_idx--;
            }
        }

        return v_array;

我只是简单地删除了我做的事情“Random obj = new Random();”从这种方法和它现在的完美工作。

非常感谢。

1 个答案:

答案 0 :(得分:1)

你的随机生成函数很可能无法生成真正的随机数。

我想象一下,你为每个电话创建一个新的随机(它与种子同时使用),所以你总是得到相同的“随机”数字集合

发布你的objGenerador.generaNumero()方法

如何使用Random类:MSDN

检查他们显示的示例,在那里你可以看到两个随机创建的同时产生相同的输出。

private static Random _Random = new Random();
public int[] generaNumero() 
{
 int v_idx; 
 for (int x = 0; x < 6; x++) 
 { 
  v_idx = x; 
  v_array[x] = _Random.Next(1, 38); 
  while (v_idx >= 0) 
  { 
   if (v_array[x] == v_array[v_idx]) 
   { 
    v_array[x] = _Random.Next(1, 38); 
    v_idx = x; 
   } 
   v_idx--; 
  } 
 } 
 return v_array; 
}