## alexchen -12

I need help with rand();. This program produces random number without repeating.
In my error list there are no errors.

Unhandled exception at 0x00414742 c++.exe: 0xC0000094: Integer division by zero.

``````int *numbers,range;

void randomize(unsigned numberToSelect){

for(unsigned i = 0; i < numberToSelect; i++){
const int selectedElement = rand()%(range - i);
const int temp = numbers[selectedElement];
numbers[selectedElement] = numbers[range - i - 1];
numbers[range - i - 1] = temp;
}

}``````

## arkoenig 340

You're doing a division in line 8. Can you prove that the divisor is never zero?

## alexchen -12

No. Can you solve this problem?

## Fbody 682

He did. What happens when (range == i)?

How does your code recognize and address that situation? It doesn't, but it needs to.

## alexchen -12

I found another problem.
Unhandled exception at 0x00401022 in Reading a file.exe: 0xC0000005: Access violation reading location 0x00000024.

``````int *numbers;

void randomize(unsigned numberToSelect,unsigned range){

for(unsigned i = 0; i < numberToSelect; i++){

const int selectedElement = rand()%(range - i);
const int temp = numbers[selectedElement];
numbers[selectedElement] = numbers[range - i - 1];//error
numbers[range - i - 1] = temp;
}

}``````

## Fbody 682

That's because you still have the same basic problem.

As mentioned before, you need to find a way to GUARANTEE that the value of the caluculation (range - i) is NEVER less-than-or-equal-to zero (0). If it's zero or less when you hit that line, you are attempting to access array elements that have negative indexes. Such indexes neither exist nor are legal to access.