这个程序主要是用来随机抽取数据库中的记录
但是要不能重复
我想先把随机数存放到一个数组里去
检查它里面有没有重复的,有的话就要再一次随机
代码如下
procedure TForm1.Button3Click(Sender: TObject);
var
zancun:array[0..100] of integer;
flag:integer;
m,o,i,j,h,n:integer;
begin
randomize;
m:=0;
n:=0;
h:=StrToInt(edit1.Text);
for j:=0 to h-1 do
begin
flag:=random(10)+1;
for o:=0 to m do
begin
if flag=zancun[o] then
showmessage('有重复数!');
//主要的思想是在这里想做个一检查,发现重复就返回上一层
如何使它发现了重复就可以返回去做random(10)+1这个动作呢?
end;
zancun[j]:=flag;
m:=m+1;
end;
for n:=0 to h-1 do
begin
listbox1.Items.Add(IntToStr(zancun[n]));
end;
end;希望高手能帮我解决一下,我是新手分 不多
希望能理解啊
但是要不能重复
我想先把随机数存放到一个数组里去
检查它里面有没有重复的,有的话就要再一次随机
代码如下
procedure TForm1.Button3Click(Sender: TObject);
var
zancun:array[0..100] of integer;
flag:integer;
m,o,i,j,h,n:integer;
begin
randomize;
m:=0;
n:=0;
h:=StrToInt(edit1.Text);
for j:=0 to h-1 do
begin
flag:=random(10)+1;
for o:=0 to m do
begin
if flag=zancun[o] then
showmessage('有重复数!');
//主要的思想是在这里想做个一检查,发现重复就返回上一层
如何使它发现了重复就可以返回去做random(10)+1这个动作呢?
end;
zancun[j]:=flag;
m:=m+1;
end;
for n:=0 to h-1 do
begin
listbox1.Items.Add(IntToStr(zancun[n]));
end;
end;希望高手能帮我解决一下,我是新手分 不多
希望能理解啊
思路是这样的:看成从一副完整的牌中抽出N张牌首先你需要产生一副完整的牌 //1、2、3、4...N
//添加到列表中
for I := 1 to N do
vList.Add(Pointer(I));
从这一副牌中随机抽出牌 ()
//从列表中取出后并从列表中删除
for I := 1 to M do
begin
J := Random(vList.Count);
vData := Integer(vList[J]);
vList.Delete(J);
Memo1.Lines.Add(IntToStr(vData));
end;//参考如下代码
procedure TForm1.Button1Click(Sender: TObject);
var
vList: TList;
I, J: Integer;
N, M: Integer;
vData: Integer;
begin
Memo1.Clear;
vList := TList.Create;
try
N := 10;
M := 5;
for I := 1 to N do
begin
vList.Add(Pointer(I));
end; for I := 1 to M do
begin
J := Random(vList.Count);
vData := Integer(vList[J]);
vList.Delete(J);
Memo1.Lines.Add(IntToStr(vData));
end;
finally
vList.Free;
end;
end;
希望能给我回答一下我得到的随机数是数据库中的序列好现在想把随机抽取的记录添加到另一张表中怎么写这个代码呢?用的是ADO组件,谢谢啊,明天结帖了,呵呵!
2、
adoquery.sql.clear;
adoquery.sql.add('select xxx,xxx,xx,xxx into 另一张表名 from xxx表名 where 序列号 in 随机数');
adoquery.execsql;
select top 10 *
from TableName
order by NewID()如果是Access可以用: //编号即你的序号关键字段
select top 5 *
from TableName
order by rnd(编号 + Time())
function GetData:Integer;
var
Idx:integer;
begin
if List.Count=0 then
begin
Result:=-1;
exit;
end;
Idx:=random(List.Count);
Result:=PInteger(List.Item[Idx]);
List.Delete(Idx);
Dispos(List.Item[Idx);
end;