-3

I'm trying to make an array[6] of random numbers (NO REPEATED)

void rnd::process(void){
    rndArr[0] = (1+rand()%(45-1));
    assign1:
    rndArr[1] = (1+rand()%(45-1));
    if(rndArr[1]==rndArr[0])goto assign1;
    assign2:
    rndArr[2] = (1+rand()%(45-1));
    if((rndArr[2]==rndArr[1])||(rndArr[2]==rndArr[0]))goto assign2;
    assign3:
    rndArr[3] = (1+rand()%(45-1));
    if((rndArr[3]==rndArr[2])||(rndArr[3]==rndArr[1])||(rndArr[3]==rndArr[0]))goto assign3;
    assign4:
    rndArr[4] = (1+rand()%(45-1));
    if((rndArr[4]==rndArr[3])||(rndArr[4]==rndArr[2])||(rndArr[4]==rndArr[1])||(rndArr[4]==rndArr[0]))goto assign4;
    assign5:
    rndArr[5] = (1+rand()%(45-1));
    if((rndArr[5]==rndArr[4])||(rndArr[5]==rndArr[3])||(rndArr[5]==rndArr[2])||(rndArr[5]==rndArr[1])||(rndArr[5]==rndArr[0]))goto assign5;
    }

Can you write a more orthodox code than this?, I'm learning

phuclv
  • 37,963
  • 15
  • 156
  • 475

1 Answers1

0
void rnd::nextNumber(int n) { // private method
  bool diff;
  do {
    rndArr[n] = 1 + rand() % (45 - 1);
    diff = true;
    for (int i = 0; i < n && diff; ++i) diff = rndArr[n] != rndArr[i];
  } while (!diff); // at least one equal
}

void rnd::process() {
  for (int i = 0; i < 6; ++i) nextNumber(i);
}
cbuchart
  • 10,847
  • 9
  • 53
  • 93