Certainly! To generate test cases for the "Sunken Ruins in Hibara Sea" problem, we need to create random test data following these constraints:

1. An integer \(N\) (1 ≤ \(N\) ≤ 100,000) representing the number of observation data points.
2. For each data point, an integer \(x_i\) (0 ≤ \(x_i\) ≤ 1,000,000) representing the position on the coastline, and an integer \(r_i\) (1 ≤ \(r_i\) ≤ 1,000,000) representing the radius of the semi-circle.

Here is a Python test case generator for this problem:

```python
import random

def tcgen():
    # Generate random N within the specified range
    N = random.randint(1, 100000)
    
    # Generate N pairs of (xi, ri) within the specified ranges
    observation_data = []
    for _ in range(N):
        x_i = random.randint(0, 1000000)
        r_i = random.randint(1, 1000000)
        observation_data.append((x_i, r_i))
    
    # Print the generated test case
    print(N)
    for x_i, r_i in observation_data:
        print(f"{x_i} {r_i}")

# Example usage:
tcgen()
```

This function generates a random number of observations \(N\) and then creates \(N\) pairs of \(x_i\) and \(r_i\) values within their respective ranges. It prints out the test case in the required format.

For real-world competitive programming, you might want to save these test cases to a file or use them in a specific testing framework. This script simply prints the generated test case to the console. If you need to save it to a file, you could modify the function like this:

```python
import random

def tcgen(filename):
    with open(filename, 'w') as f:
        # Generate random N within the specified range
        N = random.randint(1, 100000)
        
        # Write N to the file
        f.write(f"{N}\n")
        
        # Generate N pairs of (xi, ri) within the specified ranges
        for _ in range(N):
            x_i = random.randint(0, 1000000)
            r_i = random.randint(1, 1000000)
            f.write(f"{x_i} {r_i}\n")

# Example usage:
tcgen('test_case.txt')
```

This version writes the test case to a file named 'test_case.txt'. This could be useful for creating multiple test cases and organizing them in a structured manner for further testing.