Alright here you go. I'm not 100 percent sure it works because I dont have my arduino. I'll post 2 different ways. The second doesn't use the 3d array (which wouldn't compile, maybe Grumpy_Mike can help me out) but is less elegant 
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int button[] ={6,7,8,9}; // the pins for the buttons
const int ledPin = 13; // led that will blink
boolean buttonState[] = {false, false, false, false}; // variable for reading the pushbutton status
unsigned long resetTime;
//char* easyJump[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}; //insert your trick names between the quotes
//char* hardJump[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}; //these are arrays of arrays hence the pointers
//char* easyRail[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}; //if this is confusing to you (it most likely is)
//char* hardRail[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}; //look at the char array page on reference
char* tricks[4][6] = { //[y][x]
{"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}, //I'm going to use this in the code but I'm not 100% sure C permits it
{"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}, //See comments above for an explaination
{"first", "second", "third", "fourth", "fifth", "sixth", "seventh"},
{"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}
};
void setup() {
pinMode(ledPin, OUTPUT);
for (int i = 0; i < 4; i++){ //Goes through each element of the array
pinMode(button[i], INPUT);
}
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("select a trick");
}
void loop(){
for (int i = 0; i < 4; i++){
buttonState[i] = digitalRead(button[i]); // read the state of the pushbutton value:
}
for (int i = 0; i < 4; i++){
if (buttonState[i] == HIGH) { // check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
digitalWrite(ledPin, HIGH); // turn LED on:
lcd.setCursor(0, 1);
lcd.print(tricks[i][random(6)]); //this will use the 3D array of info to pull a
delay(3000); //random trick name from its corresponding grouping
resetTime = millis(); //I'm not sure if you want the delay or not but you can figure it out
}
else {
digitalWrite(ledPin, LOW); // turn LED off:
lcd.setCursor(0, 1); // set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.print((millis()-resetTime)/1000); // print the number of seconds since reset:
}
}
}
So a few side notes. I changed the millis() thing like I suggested. Also I added the part that will display the trick name. The delay may be unnecessary and maybe even cause problems so just play around with it. This uses a 3d array with pointers which is a pretty advanced concept which is pretty confusing, its not working but maybe Grumpy_Mike knows a way to initialize it. I made heavy use of arrays so if thats confusing look at the reference page for arrays and it should help.
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int button[] ={6,7,8,9}; // the pins for the buttons
const int ledPin = 13; // led that will blink
boolean buttonState[] = {false, false, false, false}; // variable for reading the pushbutton status
unsigned long resetTime;
char* easyJump[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}; //insert your trick names between the quotes
char* hardJump[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}; //these are arrays of arrays hence the pointers
char* easyRail[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}; //if this is confusing to you (it most likely is)
char* hardRail[] = {"first", "second", "third", "fourth", "fifth", "sixth", "seventh"}; //look at the char array page on reference
void setup() {
pinMode(ledPin, OUTPUT);
for (int i = 0; i < 4; i++){ //Goes through each element of the array
pinMode(button[i], INPUT);
}
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("select a trick");
}
void loop(){
for (int i = 0; i < 4; i++){
buttonState[i] = digitalRead(button[i]); // read the state of the pushbutton value:
}
for (int i = 0; i < 4; i++){
if (buttonState[i] == HIGH) { // check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
digitalWrite(ledPin, HIGH); // turn LED on:
lcd.setCursor(0, 1);
switch(i){
case 0:
lcd.print(easyJump[random(7)]); //this will use the 3D array of info to pull a
break;
case 1:
lcd.print(hardJump[random(7)]); //change the number there for the number of tricks in each group
break;
case 2:
lcd.print(easyRail[random(7)]);
break;
case 3:
lcd.print(hardRail[random(7)]);
break;
}
delay(3000); //random trick name from its corresponding grouping
resetTime = millis(); //I'm not sure if you want the delay or not but you can figure it out
}
else {
digitalWrite(ledPin, LOW); // turn LED off:
lcd.setCursor(0, 1); // set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.print((millis()-resetTime)/1000); // print the number of seconds since reset:
}
}
}
This one would compile fine so it should work hopefully. Notice the case statement used to differentiate between which group to draw from depending on which button is pressed.