the random command is generating no random number.

#include <LiquidCrystal.h>

void display_a(float a[4][1]);

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//
void setup() {
  // put your setup code here, to run once:
 lcd.begin(16,2);
 lcd.clear();

}

void loop() {
  float a[4][1]={0,1,2,3};
  
for(int i=0;i<4;i++){
  
   a[i][0]=random(0,1);
}
  
display_a(a);
}


void display_a(float a[4][1]){

  for(int i=0;i<=3;i++){
  
  lcd.setCursor(0,0);
  lcd.print("V=");
  lcd.setCursor(5,0);
  


  lcd.print(a[i][0]);

  delay(1000);
  }
  }

[\code]
   a[i][0]=random(0,1);

it would be worth your while to read what the function "random()" does.
Look here

https://www.arduino.cc/en/Reference/Random

Returns

a random number between min and max-1 (long)

So random(0,1) returns a number between 0 and 0 - you want random(0,2).

Also, if you want different results each time it runs, you need to feed something to randomSeed() - the go-to trick is to do randomSeed(analogRead(pin)); in setup, where the 'pin' is a floating input.. randomSeed() - Arduino Reference

Groove:

   a[i][0]=random(0,1);

it would be worth your while to read what the function "random()" does.
Look here

But, those zeroes are randomly distributed!!