设置/获取类属性在一个圆圈不工作
本文关键字:一个 工作 获取 属性 设置 | 更新日期: 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;
}