WaitForSeconds doesn't works

I have a beaver game and I want to make beavers appear on the screen by one each second. But during 1 second apeear all beavers. Can’t understand, why.

public GameObject[] beavers;
int currentBeaver;

void Update()
{
	StartCoroutine ("HitBeaver");
}

IEnumerator HitBeaver()
{
	currentBeaver = Random.Range (0, 14);
	beavers [currentBeaver].SetActive (true);
	yield return new WaitForSeconds (1);
	beavers [currentBeaver].SetActive (false);
}

You start coroutine each frame in your function Update(). For example, if frame rate is 60 FPS, then you call 60 time function HitBeaver(). Maybe, you need one more variable:

 public GameObject[] beavers;
 int currentBeaver;
 private bool myVis = true; //variable for start coroutine

 void Update() {
  if (myVis) {
   StartCoroutine ("HitBeaver");
  }
 }

 IEnumerator HitBeaver() {
  myVis = false; //change status
  currentBeaver = Random.Range (0, 14);
  beavers [currentBeaver].SetActive (true);
  yield return new WaitForSeconds (1.0f); //better write float value
  beavers [currentBeaver].SetActive (false);
  myVis = true; //change status
 }

I hope that it will help you.