В лото не играл, так что мб ошибаюсь с правилом заполнения. Но если я правильно понял, то по столбцам идут числа вида NX, где N - номер столбца, а X - произвольная цифра, но уникальная для столбца.
Если так, то заполняется легко: для каждого столбца берем массив цифр от 0 до 9 (для первого столбца - от 1 до 9) и делаем как-то так:
Код:
// положим n - номер текущего заполняемого столбца
if n =0 then begin
cnt := 9
for i := 0 to cnt-1 do
arr[i] := i + 1;
end else begin
cnt := 10;
for i := 0 to cnt-1 do
arr[i] := i;
end;
j := cnt;
lim := cnt - 5;
while j >= lim do begin
rnd := random(j);
grid[cnt - j, n] := 10*n + arr[rnd];
arr[rnd] := arr[cnt - 1];
j := j - 1;
end;
То есть выбираем рандомный индекс в массиве возможных цифр, в грид пишем цифру по этому индексу, и выкидываем эту цифру из массива, заменив её последней из массива, после чего убираем последнюю (уменьшаем длину массива на 1). Таким образом рандом будет выдавать уникальные цифры в пределах столбца.