我的问题是这样的..我添加了两个label分别为:label1,label2;还有一个按钮btn1Click
假设label1=300,
label2=3,点击btn1Click,就能得到这样的结果。label1=300,这里的300,意思是程序从000-999 一千个数里随机抽取300个不重复的数字,
label2=3,这里的3的意思是:随机3次,这3次随机的结果不能完全一样,
最后把这3次随机结果写入到文本里,名字分别为test1.txt ,test2.txt ,test3.txt 请教各位老师,要如何写代码....在发帖前尝试过问度娘了.
假设label1=300,
label2=3,点击btn1Click,就能得到这样的结果。label1=300,这里的300,意思是程序从000-999 一千个数里随机抽取300个不重复的数字,
label2=3,这里的3的意思是:随机3次,这3次随机的结果不能完全一样,
最后把这3次随机结果写入到文本里,名字分别为test1.txt ,test2.txt ,test3.txt 请教各位老师,要如何写代码....在发帖前尝试过问度娘了.
解决方案 »
- 版里有空的人, 去整理了一下LY主页的资料吧
- 请问stringgrid控件的表格怎么设置才能通edit一样不需要激活直接输入内容啊?
- 高手救命:Package使用的问题
- 如何使一个程序随机启动???
- 有什么办法能搞到可用分,我才290分,而且每天加10分,太慢!
- 都说网上高手多的是!可昨天的问题怎么没有人回呀?是不是问题太简单了!各位大哥帮帮忙呀
- 如何用memo显示选定的文本?
- 如何判断一个树节点是否有父亲
- Delphi VCL Forum 2001里大家所说的上传主站在哪?
- 程序初学者向各位编程高手们请教
- TPerlRegEx如何匹配不包含多个字符的内容
- 使用delphiXE5/6/7开发安卓应用时,怎么调用第三方SO库?
for i:=0 to 次数-1 do
获取到随机数,判断取到的是否与之前的相同,相同则重新获取
最后就是一个写入文件的动作。
思路大概就是这样的,代码的话没时间去帮你写了。
因为生成的随机数重复问题 (从000-999 不到1000 个的范围里面,抽取几百个, 重复的机率很高了, 所以这里不应该用for 循环吧用 while 循环应该好控制点. 获取的随机数, 没达到要求,就继续生成.
直到个数加到了300,用TStringList的savetofile保存到txt中就行了。
如果要保存3个且不相同,我不明白是不相同是什么意思,是里面的数相同但顺序不同算相同吗,如果要求数不完全相同,需要排序后挨个比较。如果确定三个TStringList都不相同,再逐个保存到txt中。
然后随机取一个以后就把该数从List中删除,再从List中随机
var
Arr: Array of Integer;
i, iValue: Integer;
begin
SetLength(Arr, 1000);
i := 0;
Randomize;
while i < ACount - 1 do
begin
iValue := Random(1000);
if Arr[iValue] = 0 then
begin
AStr.Add(IntToStr(iValue));
Inc(i);
end;
end;
SetLength(Arr, 0);
end;procedure TForm1.Button1Click(Sender: TObject);
var
t: TStringList;
i, iCount, iNum: Integer;
begin
iCount := 300;//这个数字如果需要也可以随机
iNum := 3; //这个数字如果需要也可以随机
t := TStringList.Create;
for i := 1 to iNum do
begin
t.Clear;
GetNum(iCount, t);
t.SaveToFile(ExtractFilePath(Application.ExeName) + 'Text' + IntToStr(i) + '.txt');
end;
FreeAndNil(t);
end;
var
Arr: Array of Integer;
i, iValue: Integer;
begin
SetLength(Arr, 1000);
i := 0;
Randomize;
while i < ACount - 1 do
begin
iValue := Random(1000);
if Arr[iValue] = 0 then
begin
Arr[iValue] := iValue;//不好意思,漏了句
AStr.Add(IntToStr(iValue));
Inc(i);
end;
end;
SetLength(Arr, 0);
end;
var
I, nIdx :Integer;
LoadList :TStringList;
sGet :String;
begin
LoadList := TStringList.Create;
for I := 0 to 999 do LoadList.Add(IntToStr(I)); for I := 0 to 2 do begin //抽取3个,则0..2
nIdx := Random(LoadList.Count);
sGet := LoadList.Strings[nIdx];
LoadList.Delete(nIdx);
end;
end;sGet 中的内容每次都不会相同