随机取数

baconxd 2003-10-12 12:37:20
各位高手,请教一下,如何让a,b,c,d随机取1,2,3,4四个整数,但不会重复,
麻烦讲解一下解答中各命令和字符的含义,谢谢!!
...全文
32 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ly_liuyang 2003-10-12
  • 打赏
  • 举报
回复
数据很少的时候使用集合
大的用动态数组记录已选取的数
这样就不会有重复

具体算法比较简单,自己想了,不能什么都靠别人的
47522341 2003-10-12
  • 打赏
  • 举报
回复
错了;应该是:

var L : string;
begin
a := randomfrom(['1','2','3','4']);

L := randomfrom(['1','2','3','4']);
while L = a do
L := randomfrom(['1','2','3','4']);
end;
B := L;

L := randomfrom(['1','2','3','4']);
while (L = a) or (L = b) do
L := randomfrom(['1','2','3','4']);
end;
c := L;

L := randomfrom(['1','2','3','4']);
while (L = a) or (L = b) or (L = c) do
L := randomfrom(['1','2','3','4']);
end;
D := L;

47522341 2003-10-12
  • 打赏
  • 举报
回复
呵呵;试试这个;

var L : string;
begin
a := randomfrom(['1'.'2'.'3'.'4']);

L := randomfrom(['1'.'2'.'3'.'4']);
while L = a then
L := randomfrom(['1'.'2'.'3'.'4']);
end;
B := L;

L := randomfrom(['1'.'2'.'3'.'4']);
while (L = a) or (L = b) then
L := randomfrom(['1'.'2'.'3'.'4']);
end;
c := L;

L := randomfrom(['1'.'2'.'3'.'4']);
while (L = a) or (L = b) or (L = c) then
L := randomfrom(['1'.'2'.'3'.'4']);
end;
D := L;

hiflower 2003-10-12
  • 打赏
  • 举报
回复
var
s:set of 1..4;
s:=[];
a:=RandomFrom([1,2,3,4]);
s:=s+[a];
repeat
b:=RandomFrom([1,2,3,4]);
undilt not (b in s);
s:=s+[b];
repeat
c:=RandomFrom([1,2,3,4]);
undilt not (c in s);
s:=s+[c];
repeat
d:=RandomFrom([1,2,3,4]);
undilt not (d in s);
s:=s+[b];
baconxd 2003-10-12
  • 打赏
  • 举报
回复
请问,但是用集合也有可能重复的?

5,388

社区成员

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

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