Q&A

  • 난수발생시 중복....
난수를 발생할려고 합니다.
그런데 중복이 되네요
중복되지 않게 난수를 발생하는 방법이 없나요?
난수를 발생해 그에 해당하는 레코드를 수정하고자 합니다...
좀 도와 주세요~~
난수가 중복이 되서 원하는 레코드수만큼 update가 되지 않습니다.
*^^*
2  COMMENTS
  • Profile
    김수경 2002.12.26 20:58
    현재 발생된 난수가 이전에 발생된 난수 Group(배열)에 있는지
    비교해서 있으면 다시 발생하고 없으면 처리하는 형태로
    만드셔야 합니다. 아래는 C++ Builder로 만든 예제입니다(Delphi가 아니라서
    죄송).

    참조하세요.


    #include <stdio.h>

    #define MAX_RAND 1000
    #define MAX_ITEM 1000

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      int nNo1[MAX_ITEM];
      int nI1 = 0;
      int nJ1;
      int nRnd1;

      while( nI1 < MAX_ITEM ) {
        nRnd1 = rand() % MAX_RAND;

        for( nJ1 = 0; nJ1 < nI1; nJ1++ ) { // 이미 발생된 난수인지 검사
          if( nRnd1 == nNo1[nJ1] ) {
            break;
          }
        }

        if( nJ1 == nI1 ) {
          nNo1[nJ1] = nRnd1;   // 중복되지 않은 난수 값이면 배열에 저장
          nI1++;
        }
      }

      Memo1->Lines->Clear();

      for( nI1 = 0; nI1 < MAX_ITEM; nI1++ ) { // 발생된 난수 결과 출력
        char achStr1[0x100];

        sprintf( achStr1, "%04d %04d", nNo1[nI1], nI1 );
        Memo1->Lines->Add( achStr1 ); // Memo1->Lines->Add( nNo1[nI1] );
      }
    }

  • Profile
    KDDG_ZZOM 2002.12.25 10:53
    random하기전에 randomize를 써보세요...

    즐프하세요...^^