The only reason you need to do a cast is if you need to do something that only your hex class can do. If you are doing location based work with the object’s point of origin, Actor has this built in.
Your explanation sounds like the problem. From what you are describing, your random vector would have to exactly match the location of one of the actors. If it’s even a fraction of a unit off, it won’t match.
I’m not sure what you are trying to do, but I will tell you a problem I had that might be similar and how I solved it. I wanted to create alarm zones that would alert guards to any discharged weapons within a particular volume. I created a BP that contains a box component and a vector. The box component is scaled between the point of origin and the vector (relative location and scale is set to half the vector with an extent of 1). For my weapon class in the fire event, it uses getOverlapping actors filtered by my alarm volume based on my player. I take the first entry and fire off the alert event. The alarm volume then does an unconditional getOverlappingActors and loops through everything to alert everything in it. This setup effectively only alerts guards in the correct areas and not all guards respective of their locations.
So if you are trying to do something with your hex actors in a particular location, I would use a volume for similar results.