设置/获取类属性在一个圆圈不工作

本文关键字:一个 工作 获取 属性 设置 | 更新日期: 2023-09-27 18:10:28

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

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个数字的相同组合。整个过程只改变了三次,我注意到的另一件事是,如果我把输出放在消息框中,它会完美地工作。但当我试图将其写入文件时却没有。

我希望有人能帮我解决问题。

谢谢。

嗨,再次感谢,在阅读下面的帖子并获得更多文档后,我得到了问题的种子,这是我生成随机数的方式,正如你所说的。

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();"的行,现在它工作得很好。

谢谢。

设置/获取类属性在一个圆圈不工作

你的随机生成函数很可能不会生成真正的随机。

i假设你每次调用都创建一个新的Random(它同时用作seed),所以你总是得到相同的"随机"号码集合

张贴你的objGenerador.generaNumero()方法

如何使用随机类: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; 
}