Всем привет, хочу вывести в мемо случайные числа без повторов от 1 до 35. Как это реализовать?
Вот мой код:
procedure TForm1.Button1Click(Sender: TObject);
var
a : array [1..35] of integer;
i, newPos, tmpA:integer;
begin
for i:=1 to 35 do a:=35 + i;
Randomize;
for i:=1 to 5 do begin
newPos := Random (10);
tmpA:= a[newPos];
a[newPos]:=a;
a:=tmpA;
memo1.Lines.Add(inttostr(tmpA));
end;
Выводится но значение выше 35... Код не мой, брал с какого то форума, пытался править под себя..
Другие языки программирования и технологии
Делфи, вывод в мемо случайных чисел без повторов из массива. массив от 1 до 35.
implementation
{$R *.dfm}
const
Len = 35;
//Не прибегая к помощи математики
procedure TForm1.Button1Click(Sender: TObject);
var
a: array [1 .. Len] of integer;
i, k, n: integer;
begin
n := Len;
Memo1.Clear;
for i := 1 to Len do
a[і] := i;
for i := 1 to Len do
begin
k := random(n) + 1;
Memo1.Lines.Add(IntToStr(a[k]));
a[k] := a[n];
dec(n)
end
end;
//С помощью предварительно рассчитанных или подобранных
//коэффициентов линейно-конгруэнтного генератора
procedure TForm1.Button2Click(Sender: TObject);
const
m = 36;
a = 13;
c = 19;
var
b: array [1 .. Len] of integer;
i, Seed: integer;
begin
Memo1.Clear;
Seed := random(Len) + 1;
for i := 1 to Len do
b[і] := i;
for i := 1 to m do
begin
Seed := (Seed * a + c) mod m;
if Seed > 0 then
Memo1.Lines.Add(IntToStr(b[Seed]))
end
end;
initialization
randomize;
end.
{$R *.dfm}
const
Len = 35;
//Не прибегая к помощи математики
procedure TForm1.Button1Click(Sender: TObject);
var
a: array [1 .. Len] of integer;
i, k, n: integer;
begin
n := Len;
Memo1.Clear;
for i := 1 to Len do
a[і] := i;
for i := 1 to Len do
begin
k := random(n) + 1;
Memo1.Lines.Add(IntToStr(a[k]));
a[k] := a[n];
dec(n)
end
end;
//С помощью предварительно рассчитанных или подобранных
//коэффициентов линейно-конгруэнтного генератора
procedure TForm1.Button2Click(Sender: TObject);
const
m = 36;
a = 13;
c = 19;
var
b: array [1 .. Len] of integer;
i, Seed: integer;
begin
Memo1.Clear;
Seed := random(Len) + 1;
for i := 1 to Len do
b[і] := i;
for i := 1 to m do
begin
Seed := (Seed * a + c) mod m;
if Seed > 0 then
Memo1.Lines.Add(IntToStr(b[Seed]))
end
end;
initialization
randomize;
end.
Попробуй так:
procedure TForm1.Button1Click(Sender: TObject);
var
N,f,g:integer;
a:array[0..35]of integer;
begin
Randomize;
N:=35;
for f:=1 to N do a[f]:=f;
for f:=1 to N do begin
g:=Trunc(Random*(N-f)+f+0.5);
memo1.Lines.Add(inttostr(a[g]));
a[g]:=a[f];
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
N,f,g:integer;
a:array[0..35]of integer;
begin
Randomize;
N:=35;
for f:=1 to N do a[f]:=f;
for f:=1 to N do begin
g:=Trunc(Random*(N-f)+f+0.5);
memo1.Lines.Add(inttostr(a[g]));
a[g]:=a[f];
end;
end;
мой вариант проги 100% работает:
procedure TForm1.Button1Click(Sender: TObject);
var
w,e:integer;
q:array[1..35]of integer;
begin
for w:=1 to 35 do q[w]:=0;
w:=0;
while q[36]=0 do
w:=w+1;
randomize;
e:=Random(35);
if q[w] = 0 then q[w]:=e;
memo1.Lines.Add(inttostr(q[w]));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
w,e:integer;
q:array[1..35]of integer;
begin
for w:=1 to 35 do q[w]:=0;
w:=0;
while q[36]=0 do
w:=w+1;
randomize;
e:=Random(35);
if q[w] = 0 then q[w]:=e;
memo1.Lines.Add(inttostr(q[w]));
end;
end;
Пишите на почту или в асю 586178755
Похожие вопросы
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- MASM32 случайные числа, , массив
- как сделать массив из случайных чисел от 1 до 15 (размерность массива 4х4) что бы они не повторялись в VBA????
- Упорядочить массив по убыванию из 10 случайных чисел на промежутке от -500 до 500. Информатика, 9 класс.
- Дан двумерный массив А [7,8], заполненный случайным образом. Заменить нечетные элементы массива на число 0 СРОЧНОО ГАЙСЫ
- Заполните массив случайными числами. Отсортируйте массив по возрастанию методом пузырька.
- Задан числовой массив A[1:m, 1:n]. Составить программу...
- линейный массив из 20 элементов заполнить случайными числами в диапазоне от 0 до 1000 и отсортировать по возрастанию
- КАК С ГЕНЕРИРОВАТЬ ДВА МАССИВА ИЗ СЛУЧАЙНЫХ ЧИСЕЛ С ПОМОЩЬЮ RANDOM НА ЯЗЫКЕ СИ? Я смог только заполнить от 0 до 255
- Нужен массив, размером в 100 элементом, заполненный случайными числами, отсортированными в порядке возрастания