Q:

Unity Vector3 position inside collider

I am trying to create a "wander" action that will make my NPC walk to a random position. 
The catch is that the NPC should only go positions inside of a collider. 
I have a huge Sphere that has a collider on it now I only want my NPC to go to positions that are inside that Sphere collider. 
My question is how do i find a random position inside of a colider?
Update 
So after testing i am unable to use colliders because the sphere is too big here is an image of my gameobject:

As you can see from the image I have a huge sphere that my NPC's will have to stay inside when wandering
In order to use the Collider.ClosestPoint() the collider has to be a Box, sphere or a mesh collider with a convex. 
Sadly this is not feasible for me because the sphere should not collide with other objects.
So my question is how do I find a point inside this gameobject?

A:

Use Collider.ClosestPoint(Vector3 position). From the documentation:

Returns a point on the collider that is closest to a given location.

Update:

Sadly this is not feasible for me because the sphere should not collide with other objects.

If you want your collider to not limit movement of objects, you can turn it into a Trigger. The function Collider.ClosestPoint can be used regardless.
Here's some example:
class MyNPC {

    // Assign through inspector
    public Collider bigSphere;

    // Where to move to
    Vector3 target;

    // Called when NPC has to select a new location to move to
    void SelectTarget() {

        // Bounds of the sphere
        Bounds b = bigSphere.bounds;

        // Get a random point inside the bounds
        target = new Vector3(
            Random.Range( b.min.x, b.max.x ),
            Random.Range( b.min.y, b.max.y ),
            Random.Range( b.min.z, b.max.z )
        );

        // Find the closest point that belongs in the collider from that
        target = bigSphere.ClosestPoint(target);

        // Now target holds a random point inside the sphere

    }

