Naja, von KI kann man da nicht so ganz sprechen, das ist eher ein zufallsprinzip. Normalerweise funktioniert rand so :
Du gibst der klasse ein Intervall an, in welchem bereich er die Zufallszahlen erzeugen soll. Dann weisst du die erzeugte Pseudo zufallszahl (es handelt sich ja um mathematisch nicht echte Zufallszahlen!) einer koordinate zu (x und y) dann schaust du ob da schon was ist, wenn nein, markieren, wenn ja -> Nochmal erzeugen lassen. Du musst ja nur den Anfangspunkt erzeugen und dann noch zufällig bestimmen, in welche richtung (Ost, Nord, West, Sued) das ganze schiff aufgebaut werden soll.
Ich weiss nicht ob dir das hilft aber so würde es in java aussehen:
Random rand=new Random(); //Random ist aus java.util (also aus einer Klassenbibliothek)
int x=rand.nextInt(0,maxX); //wobei maxX deine Maximale grösse ist
int y=rand.nextInt(0,maxY);
//Überprüfen und platzieren.
Weiss jetzt nicht mehr so genau wie das in C war (ist auch schon ein bisschen her, seit ich das letzte mal C gecoded hab, aber so ungefähr müsste es auch da gehen