Flying AI Shooting Help

I have a basic AI script for following the player when he's in a certain range. I know how to make them shoot but not at a moving target. I can do the math to calculate a vector but how do I do it so they aren't hitting a bulls-eye every time when they shoot. Here's My script.

 var target : Transform; //the enemy's target
var moveSpeed = 3; //move speed
var rotationSpeed = 3; //speed of turning
var attackThreshold = 1.5; // distance within which to attack
var chaseThreshold = 10; // distance within which to start chasing
var giveUpThreshold = 20; // distance beyond which AI gives up
var attackRepeatTime = 1; // delay between attacks when within range

private var chasing = false;
private var attackTime = Time.time;

var myTransform : Transform; //current transform data of this enemy

function Awake()
{
    myTransform = transform; //cache transform data for easy access/preformance 
    }

function Start()
{
     target = GameObject.FindWithTag("Player").transform; //target the player
    }

function Update () {

    // check distance to target every frame:
    var distance = (target.position - myTransform.position).magnitude;

if (distance < chaseThreshold) {
            chasing = true;
        }

    if (chasing) {

        //rotate to look at the player
        myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
        Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);

        //move towards the player
        myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}
        // give up, if too far away from target:
        if (distance > giveUpThreshold) {
            chasing = false;
        }

        // attack, if close enough, and if time is OK:
      //  if (distance < attackThreshold && Time.time > attackRepeatTime) {

//                  target.SendMessage("ApplyDamage",10);
            // Attack! (call whatever attack function you like here)
            //}
        if (distance < attackThreshold) {
        //moveSpeed=;
        //stop when close enough
    }

        //    attackTime = Time.time+ attackRepeatTime;
        //}

        // start chasing if target comes close enough

}

function OnTriggerEnter (other: Collider) {
if (other.gameObject.CompareTag("Bullet")){
chaseThreshold=100000000;
}
}

anyone have any ideas?

The easiest thing is probably to add randomness

This will damage the player roughly every second time it fires

if (Random.value < 0.5) {
     //Apply damage
}

You could also fire raycasts, as from an imaginary gun to see if it hits the player. The chance of not hitting the player will increase over distance I hope it will compile

var randomness : float = 0.1F;

var hit : RaycastHit;
var distance : float = Vector3.Distance (transform.positon,player.transform.position);
var rnd : Vector3 = Random.insideUnitSphere*distance*randomness;

Debug.DrawLine (transform.positon,player.transform.position+rnd,Color.cyan);

if (Physics.Linecast ( transform.positon, player.transform.position+rnd,out hit)) {
    if (hit.transform.gameObject == player) {
        //Apply Damage
    }
}