随机选数问题(得解就给分)

火龙岛主 2003-02-18 03:46:43
每次选择的数都不相同,而且选择过的数据部可以在选。
例如:从1到100中随机选择数据
第一次选择44
第二次选择52
则第三次就不能再选择44,52了
急于求救!!!!!
...全文
56 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjybestzjybest 2003-02-20
  • 打赏
  • 举报
回复
var
temp.i,j,k:integer;
num:array[0..99] of integer;
begin
for i:=1 to 100 do
num[i-1]:=i;
j:=99;
i:=0;
while i<=99 do
begin
randomize;
k:=random(j);
while (k=j) or (k<0) do
begin
randomize;
k:=random(j);
end;
temp:=num[k];
num[k]:=num[j];
num[j]:=temp;
j:=j-1;
i:=i+1;
end;
end;

zmy9709 2003-02-20
  • 打赏
  • 举报
回复
建两个数组比如:
data:array[1..100] of byte;
Data_flag:array[1..100]of Boolean;
为data赋值初始化为待选数据。
为Data_flag赋值初始化为,该位置是否有效。
然后随机在Data中取数,取到后查看Data_flag看Data_flag相对位置是否有效。
有效取走,并把Data_flag该位子写成无效,若无效,则丢弃取下一个。
也可只定义一个数组Data,取走数后把该位置为一不合理的数,比如0,取得0为无效,其他为有效,取到有效的数后把改为置0;
你试试吧。
anh 2003-02-20
  • 打赏
  • 举报
回复
数不多的话你可以把它放到一个表中做记录移动。选择过的你就把它DELETE 掉,或是可以把它做一个标记。我以前在VFP 中做的抽奖程序就是这样的。最多的数据量我是用4万条做的,可在用的时候只有5-6千条。效果还是不错的。
我想在DELPHI 中写的话也是可以的。
chwdong 2003-02-20
  • 打赏
  • 举报
回复
RamjetZhang(我曾经不是一头猪)
那你现在是?????
RamjetZhang 2003-02-18
  • 打赏
  • 举报
回复
建一个list就行,重复就再random一个,反正就100次

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧