Programming traffic light, want multiple loops at random

Okay, here's my code:

// This is a program designed to run a five signal traffic light.
//Designed by JohnnyRocket

int red = 2;
int yellow = 3;
int green = 4;
int yel_arrow = 5;
int grn_arrow = 6;
int swap = 4000;
int time = 7000;
int redtime = 7000;
int crosstime = 10;
int flash = 1000;


void setup(){
  red = OUTPUT;
  yellow = OUTPUT;
  red = OUTPUT;
  yel_arrow = OUTPUT;
  grn_arrow = OUTPUT;
}

void loop(){
  digitalWrite(green, HIGH);
  digitalWrite(grn_arrow, HIGH);     //now both lights are on
  delay(crosstime);                  //make it look authentic
  digitalWrite(red, LOW);            // turn red off
  delay(time);                       //Wait
  digitalWrite(yel_arrow, HIGH);     //Turn green arrow to yellow
  delay(crosstime);
  digitalWrite(grn_arrow, LOW);
  delay(time);
  digitalWrite(yel_arrow, LOW);     //Begin yellow arrow flash
  delay(flash);
  digitalWrite(yel_arrow, HIGH);    //Once
  delay(flash);
  digitalWrite(yel_arrow, LOW);
  delay(flash);
  digitalWrite(yel_arrow, HIGH);    //Twice
  delay(flash);
  digitalWrite(yel_arrow, LOW);
  delay(flash);
  digitalWrite(yel_arrow, HIGH);    //Third
  delay(flash);
  digitalWrite(yel_arrow, LOW);
  delay(flash);
  digitalWrite(yel_arrow, HIGH);    //Fourth
  delay(flash);
  digitalWrite(yel_arrow, LOW);
  delay(flash);
  digitalWrite(yel_arrow, HIGH);    //Fifth
  delay(flash);
  digitalWrite(yel_arrow, LOW);
  delay(flash);
  digitalWrite(yel_arrow, HIGH);    //Sixth
  delay(flash);
  digitalWrite(yel_arrow, LOW);     //And off
  delay(time);
  digitalWrite(yellow, HIGH);       //Turn green main to yellow
  delay(crosstime);
  digitalWrite(green, LOW);
  delay(swap);
  digitalWrite(red, HIGH);         //Turn yellow to red
  delay(crosstime);
  digitalWrite(yellow, LOW);
  delay(redtime);
}

I want to run multiple sequences so that it may start out with a green arrow, then go red, then go green light, or something else alltogether....