Choose a random point that is within view of camera

Hi guys.

I’ve seen many questions that ask how to check weather or not something is visible, but I am now wondering how to choose a random point within the bounds of the camera.

I have a standard rectagular plane, but the camera is angled so only a cone shape is in view.

 var screenY = Random.Range(10,1120);
 var screenX = Random.Range(10,630);
 var ray : Ray = Camera.main.ScreenPointToRay(Vector3(screenX,screenY,100));
 Debug.DrawRay (ray.origin, ray.direction * 400, Color.yellow);  

Currently my plan is to use ScreenPointToRay from the camera and then try and figure out where the ray intersects my plane, and that will give me my point. However that path seems a bit like a roundabout way of doing things, is there any other ways to do this?

Little pseudo code, but maybe something like this would work?

float screenX = Random.Range(0.0f, camera.main.pixelWidth);
float screenY = Random.Range(0.0f, camera.main.pixelHeight);
float ScreenZ = Random.Range(camera.main.nearClipPlane, camera.main.farClipPlane);
Vector3 point = camera.main.ScreenToWorldPoint(new Vector3(screenX, screenY, ScreenZ));