procedure TForm1.Button2Click(Sender: TObject); var i:integer; iSum:integer; IntArray : array [1..100] of integer; begin Randomize; iSum:=0; while iSum<>2000 do begin iSum:=0; ListBox1.Clear; for i:=1 to 100 do begin IntArray[i]:=Random(45); //可以用数组接收 iSum:=iSum+IntArray[i]; ListBox1.AddItem(IntToStr(IntArray[i]),self); //显示出来给你看 end; end; end;
我的想法,设她们的求和函数为sum()function p(aDelta: integer: integer; { repeat result := randomrange(1,100); until arr[result] + aDelta < 45; }procedure main() { 生成100个随即数,放在arr[1..100] of integer, delta := sum() - 2000; while delta <> 0 do { d := min(abs(delta), 45 div 2); if delta < 0 then d := -d; idx := p(d); arr[idx] := arr[idx] + d; delta := delta - d; //收敛 } }
var i,j:integer; begin Randomize; j:=0 ; while j<>2000 do begin for i:=0 to 100 do begin j:=j+Random(45); edit1.Text:=inttostr(j); end; end; edit2.Text:='right'; end;
procedure TForm1.Button1Click(Sender: TObject); var Res: array [0..99] of Integer; I, B: Integer; begin Randomize; ZeroMemory(@Res, SizeOf(Res)); for I := 1 to 2000 do begin repeat B := Random(Length(Res)); B := Random(Length(Res)); until Res[B] < 45; Inc(res[B]); end; end;
//另外一个想法 procedure TForm1.Button1Click(Sender: TObject); var Res: array [0..99] of Integer; I, B, C: Integer; begin Randomize; ZeroMemory(@Res, SizeOf(Res)); I := 1; while I < 2000 do begin repeat B := Random(Length(Res)); if Res[B] <> 0 then B := Random(Length(Res)); until Res[B] < 45; C := Random(45 - Res[B]); Inc(res[B], C); Inc(I, C); end; end;
var
i:integer;
iSum:integer;
IntArray : array [1..100] of integer;
begin
Randomize;
iSum:=0;
while iSum<>2000 do
begin
iSum:=0;
ListBox1.Clear;
for i:=1 to 100 do
begin
IntArray[i]:=Random(45); //可以用数组接收
iSum:=iSum+IntArray[i];
ListBox1.AddItem(IntToStr(IntArray[i]),self); //显示出来给你看
end;
end;
end;
{
repeat
result := randomrange(1,100);
until arr[result] + aDelta < 45;
}procedure main()
{
生成100个随即数,放在arr[1..100] of integer, delta := sum() - 2000;
while delta <> 0 do
{
d := min(abs(delta), 45 div 2);
if delta < 0 then d := -d;
idx := p(d);
arr[idx] := arr[idx] + d;
delta := delta - d; //收敛
}
}
i,j:integer;
begin
Randomize;
j:=0 ;
while j<>2000 do
begin
for i:=0 to 100 do
begin
j:=j+Random(45);
edit1.Text:=inttostr(j);
end;
end;
edit2.Text:='right';
end;
var
Res: array [0..99] of Integer;
I, B: Integer;
begin
Randomize;
ZeroMemory(@Res, SizeOf(Res));
for I := 1 to 2000 do
begin
repeat
B := Random(Length(Res));
B := Random(Length(Res));
until Res[B] < 45;
Inc(res[B]);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Res: array [0..99] of Integer;
I, B, C: Integer;
begin
Randomize;
ZeroMemory(@Res, SizeOf(Res));
I := 1;
while I < 2000 do
begin
repeat
B := Random(Length(Res));
if Res[B] <> 0 then
B := Random(Length(Res));
until Res[B] < 45;
C := Random(45 - Res[B]);
Inc(res[B], C);
Inc(I, C);
end;
end;