Random Option from Array without Repetition

This is the entire code:

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

const char *players[]={
"Student 1", 
"Student 2", 
"Student 3", 
"Student 4", 
"Student 5", 
"Student 6",
"Student 7", 
"Student 8", 
"Student 9", 
"Student 10", 
"Student 11", 
"Student 12", 
"Student 13", 
"Student 14", 
"Student 15", 
"Student 16", 
"Student 17",
"Student 18", 
"Student 19", 
"Student 20", 
};

long player;

int val1 = 0;
int BUTTON1 = 1;

void setup() {
  lcd.begin(16, 2);
  pinMode(13, OUTPUT);
  pinMode(BUTTON1, INPUT_PULLUP);
}

void loop() {
  lcd.setCursor(0,0);
  lcd.print("Please press");
  lcd.setCursor(0,1);
  lcd.print("the button!");
  digitalWrite(13, HIGH);
  val1 = digitalRead(BUTTON1);
  unsigned long seed=seedOut(50);
  randomSeed(seed);
  if (val1 == LOW) {
    for (int i=0;i<1;++i) {
      player = (random(sizeof(players)/sizeof(char*)));
      lcd.clear();
      digitalWrite(13, LOW);
      lcd.setCursor(0,0);
      lcd.print("I choose:");
      lcd.setCursor(0, 1);
      lcd.print(players[player]);
      delay(5000);
      lcd.clear();
    }
  }
  else
  {
    return;
  }
}

unsigned int bitOut(void) {
  static unsigned long firstTime=1, prev=0;
  unsigned long bit1=0, bit0=0, x=0, port=0, limit=10;
  if (firstTime) {
    firstTime=0;
    prev=analogRead(port);
  }
  while (limit--) {
    x=analogRead(port);
    bit1=(prev!=x?1:0);
    prev=x;
    x=analogRead(port);
    bit0=(prev!=x?1:0);
    prev=x;
    if (bit1!=bit0)
      break;
  }
  return bit1;
}

unsigned long seedOut(unsigned int noOfBits) {
  unsigned long seed=0;
  for (int i=0;i<noOfBits;++i)
    seed = (seed<<1) | bitOut();
  return seed;
}