1. 定义变量用来保存每个数字的使用次数 array[0..99] of integer; 当然也可能是array[1..100],看你的“100个数字”是0~99还是1~100,使用前初始化到全02. 定义变量用来保存每条记录内的数字计数 array[0..9] of integer; 使用前初始化到全03. 定义变量来保存数字被引用的总次数用来控制循环 integer; 使用前初始化到04. 初始化随机数种子。 Randomize;5. 用while do循环,条件为数字的总引用计数<6006. 在循环体内随机生成 a. 数字(Random(100)或者Random(100)+1) b. 记录序号(Ramdom(10))7. 检查该数字在1中定义的引用计数,应小于6,检查记录指定位置状态,应为0,如2条件满足,则该数字引用计数+1,总引用计数+1,记录的相应位置置位为1。8. 重复循环。
var hm: array[0..9,0..99] of Integer;var i,j: Integer; List,List1: TList; begin FillChar(hm,sizeof(hm),0); List := TList.Create; List1 := TList.Create; try for i := 0 to 999 do List1.Add(Pointer(i)); for i := 0 to 5 do for j := 0 to 99 do List.Add(Pointer(j)); while List.Count > 0 do begin I := random(List1.Count); j := random(List.Count); inc(hm[Integer(List1[i]) div 100,Integer(List[j])]); //计数加1(存在重复数字) List1.Delete(I); List.Delete(j); end;
finally List1.Free; List.Free; end; end;
写错了,还不能编辑的...7楼的代码发错了^_^var hm: array[0..9,0..99] of Integer;var i,j, k: Integer; List: TList; begin FillChar(hm,sizeof(hm),0); List := TList.Create; try for i := 0 to 5 do for j := 0 to 99 do List.Add(Pointer(j)); for i := 0 to 9 do for j := 0 to 59 do begin
k := random(List.Count); inc(hm[i,Integer(List[k])]); //计数加1(存在重复数字) List.Delete(j); end;
finally List.Free; end; end;以下应该是楼主所需要的代码:var hm: array[0..9,0..99] of Integer;var i,j, k,l: Integer; List: TList; begin FillChar(hm,sizeof(hm),0); List := TList.Create; try for I := 0 to 100 - 1 do begin for J := 0 to 9 do List.Add(Pointer(j)); for k := 0 to 6 - 1 do begin l := Random(List.Count); hm[Integer(List[l]), i] := 1; List.Delete(l); end; end;
比如数字是53
那么hm[i,53]就等于1
不然就等于0
array[0..99] of integer;
当然也可能是array[1..100],看你的“100个数字”是0~99还是1~100,使用前初始化到全02. 定义变量用来保存每条记录内的数字计数
array[0..9] of integer;
使用前初始化到全03. 定义变量来保存数字被引用的总次数用来控制循环
integer;
使用前初始化到04. 初始化随机数种子。
Randomize;5. 用while do循环,条件为数字的总引用计数<6006. 在循环体内随机生成
a. 数字(Random(100)或者Random(100)+1)
b. 记录序号(Ramdom(10))7. 检查该数字在1中定义的引用计数,应小于6,检查记录指定位置状态,应为0,如2条件满足,则该数字引用计数+1,总引用计数+1,记录的相应位置置位为1。8. 重复循环。
hm: array[0..9,0..99] of Integer;var
i,j: Integer;
List,List1: TList;
begin FillChar(hm,sizeof(hm),0);
List := TList.Create;
List1 := TList.Create;
try
for i := 0 to 999 do List1.Add(Pointer(i)); for i := 0 to 5 do
for j := 0 to 99 do
List.Add(Pointer(j)); while List.Count > 0 do begin
I := random(List1.Count);
j := random(List.Count);
inc(hm[Integer(List1[i]) div 100,Integer(List[j])]); //计数加1(存在重复数字)
List1.Delete(I);
List.Delete(j);
end;
finally
List1.Free;
List.Free;
end;
end;
hm: array[0..9,0..99] of Integer;var
i,j, k: Integer;
List: TList;
begin FillChar(hm,sizeof(hm),0);
List := TList.Create;
try for i := 0 to 5 do
for j := 0 to 99 do
List.Add(Pointer(j)); for i := 0 to 9 do
for j := 0 to 59 do begin
k := random(List.Count);
inc(hm[i,Integer(List[k])]); //计数加1(存在重复数字)
List.Delete(j);
end;
finally
List.Free;
end;
end;以下应该是楼主所需要的代码:var
hm: array[0..9,0..99] of Integer;var
i,j, k,l: Integer;
List: TList;
begin FillChar(hm,sizeof(hm),0);
List := TList.Create;
try
for I := 0 to 100 - 1 do begin
for J := 0 to 9 do
List.Add(Pointer(j));
for k := 0 to 6 - 1 do begin
l := Random(List.Count);
hm[Integer(List[l]), i] := 1;
List.Delete(l);
end;
end;
finally
List.Free;
end;
end;