Instantiate sometimes creates more then 1 objects

I am trying to create 1 point at a time every few seconds on a random basis of 1-5 seconds and the problem im curently facing is that i am sometimes creating 2 objects at the same time even after i added a bool to make sure the instantiate code is only ran once everytime.
Here is my code:

if(only1 == true)
		{
			GameObject Point1 = Instantiate(PointArray[(Random.Range(0, PointArray.Length))], PointSpawner1.position, Quaternion.identity) as GameObject;
			Point1.rigidbody2D.velocity = transform.TransformDirection(new Vector2(-1, 0) * 5);
			only1 = false;
		}
		yield return new WaitForSeconds(Random.Range (1,5));
		if(only2 == true)
		{
			GameObject Point2 = Instantiate(PointArray[(Random.Range(0, PointArray.Length))], PointSpawner2.position, Quaternion.identity) as GameObject;
			Point2.rigidbody2D.velocity = transform.TransformDirection(new Vector2(-1, 0) * 5);
			only2 = false;
		}
		yield return new WaitForSeconds(Random.Range(1,5));
		only1 = true;
		only2 = true;

This code is ran in a loop forever.Please help me.Thank you

You PointSpawner1 and 2 positions are not Random.

They are obviously drawing from the same source of positions and sometimes have the same.

what are pointspawnder1 and 2 code?