RigidBody_problem with gameobject

Hello,
I have a little problem. I want to instanciate an GameObject (Sphere) at runtime to be on my terrain.
I used the Instanciate method but when i want to create that sphere at runtime, a sphere appears twice or i want a sphere to appear once. Do you have any ideas ? here is my code

using UnityEngine;
using System.Collections;

public class create_marble : MonoBehaviour {

 public GameObject sphere;
 public Camera camera;    
 void OnGUI()
      {
    if (Input.GetKeyDown(KeyCode.E))
    {
        Vector3 pos = camera.transform.position + camera.transform.forward * 5f;
        //sphere.transform.localScale += new Vector3(2, 2, 2);    
        Instantiate(sphere, pos, Quaternion.identity);

        
        
        
    }
}

}

here is a screen capture of my problem

use getkeydown instead of get key.get key down works only one time but get key works upto you release the key. it’s like step.
and one more thing use different different position to instantiate.
if you are new to unity then take look at unity tutorials