2013-04-22 1 views
0

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; 
    } 

} 

나는 무작위 방식으로 선택된 6 개의 숫자 배열로 1000 개의 라인을 조합해야한다고 말했듯이. 그래서 코드의 어떤 부분에서 다음과 같은 것을 얻었습니다 :

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() { 내가 intance 수행 하였다 선 제거

 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; 

I 단순한 "임의 OBJ = 새로운 랜덤();" 이 방법 및 그것의 완벽한 지금 일에서.

감사합니다.

+0

난수 생성기는 의사 값을 사용하여 의사 난수를 생성합니다. 씨앗을 바꾸지 않으면 같은 목록을 얻을 수 있습니다. MSDN - [임의 클래스] (http://msdn.microsoft.com/en-us/library/system.random.aspx)의 비고 섹션을 참조하십시오. – Tim

+1

야생 추측 :'generaNumero'에서'Random' 클래스를 만듭니다. 방법. 그것을 objGenerador'의 생성자로 옮겨보십시오. http://stackoverflow.com/questions/767999/random-number-generator-only-generating-one-random-number – I4V

답변

1

임의 생성 함수는 실제 실수를 생성하지 않을 가능성이 큽니다.

난 당신이 전화 (씨앗으로 모두 같은 시간을 사용) 새로운 임의의 당 생성 상상 그래서 당신은 항상

게시 동일한 "임의의"번호 수집에게 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; 
} 
+0

public int [] generaNumero() {임의의 obj = 새로운 무작위(); // Objeto Randomico int v_idx; for (int x = 0; x <6; x ++) { v_idx = x; v_array [x] = obj.Next (1, 38); 동안 (v_idx> = 0) { 경우 (v_array [X] == v_array [v_idx]) { v_array는 [X]를 OBJ =.다음 (1,38); v_idx = x; } v_idx--; } } return v_array; } – user2306571

+0

무작위 객체를 정적으로 만드십시오 -> 일단 초기화되고 임의의 새로운 난수를 원할 때마다 random.Next로 소비합니다. – fixagon

관련 문제