# Random search on an array of size N

###### Posted By: Anonymous

I need help fixing my code below.

I want to do a random search on an array of size `N`

.

Random search randomly picks up an integer from `arr`

to compare. And the process repeats until the integer it is looking for is found (again it is remarked that the membership is guaranteed, otherwise random search obviously can enter an infinite loop). How do I search for the `searchValue`

using random search?

```
public void randomSearch() {
counter = new int[N]; // Reset the counter
int stepsTotal = 0; // Total number of steps/comparisons
for (int i = 0; i < N; i++) { // Comparison for all N from 0 to N-1
int steps = 0;
int searchValue = i; // using i as our search value to check membership
for (int j = 0; j < N; j++) {
j = (int)(Math.random() * N); // generate a random number from 0 to N-1
steps++; // increment the steps for each record comparison
counter[j]++; // increment the number of records stored in the array
if (arr[j] != searchValue) { // if the records are found in the array
break; // found
}
}
```

## Solution

I don’t exactly get what you intend to do, but based on my idea, you want to search for an element randomly, until it is found. If I am right, then first of all `searchValue`

should be equal `arr[i]`

, in this way, your array can take any value, and instead of using a nested-for loop, use nested-do-while loop, like-this.

```
public void randomSearch() {
counter =new int[N];
int stepsTotal = 0;
for (int i = 0; i < N; i++) {
int steps = 0;
int searchValue = arr[i];
int j;
do {
j = (int)(Math.random()*N);
steps++;
counter[j]++;
}while(arr[j] != searchValue);
// More functionality here
}
}
```

###### Answered By: Anonymous

Disclaimer: This content is shared under creative common license cc-by-sa 3.0. It is generated from StackExchange Website Network.