Показать сообщение отдельно
  #2  
Старый 15.05.2015, 00:05
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

В лото не играл, так что мб ошибаюсь с правилом заполнения. Но если я правильно понял, то по столбцам идут числа вида 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). Таким образом рандом будет выдавать уникальные цифры в пределах столбца.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием