我正在尝试创建一个包含 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个数字组合。整个过程只改变三倍,我注意到的另一件事是,如果我将输出放在消息框中,它会完美运行。但不是当我尝试将其写入文件时。
我希望有人可以帮助解决我的问题。
谢谢。
嗨,再次感谢,在阅读下面的帖子并获得更多文档后,我找到了问题的根源,这就是我生成随机数的方式,正如你们所说。
公共 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();” 从这种方法及其现在的工作完美。
多谢。