n1:= random(20);
n2:= rand((100-n1) div 4);
n3:= rand((100-n1-n2) div 3);
n4:= rand((100-n1-n2-n3) div 2);
n5:= 100-n1-n2-n3--n4;
n2:= rand((100-n1) div 4);
n3:= rand((100-n1-n2) div 3);
n4:= rand((100-n1-n2-n3) div 2);
n5:= 100-n1-n2-n3--n4;
解决方案 »
- ▲▲▲请问如何完善下面的功能,RichEdit显示GIF动画?▲▲▲
- 读取自己的内存数据问题
- 关于在dll中调用WebService的问题,100分相赠
- 请教LockBox2的RSA加密数据问题
- 求篇文章,中英文对照的只要和delphi或者sql server有关即可!谢谢!
- 高分请教自认为比较牛一点的问题。
- 要实现OICQ面版的效果,大家都是用的哪个控件?在哪里下载?
- 利用SQL语句,如何将西文双引号保存到数据库中?
- 在线程中使用的控件,能否在线程执行时,在外面改变?
- 这是为什么?请进!
- kingron大侠网站上的猛料1.3用什么浏览器打开,在哪里有下载,谢谢
- SHOWMODAL的奇怪现象?!
fillchar(n,sizeof(n),0);
for i:=1 to 100 do
inc(n[random(5)+1]);2)效率稍高
{先随机产生5个数}
total := 100;
for i:=1 to 4 do
begin
n[i] := random(total);
dec(total,n[i]);
end;
n[5] := total;{但这其中,从n[1]到n[5],范围逐渐缩小,会使随机有倾斜
譬如很难出现n[5] > 90 的情况,因此,有必要将这5个数
随机打乱次序,保证产生数值的随机性}
for i:=1 to 5 do
begin
j := random(5)+1; k := random(5)+1;
tmp := n[j]; n[j] := n[k]; n[k] := tmp;
end;这样应该可以了。
var
total:integer;
n:variant;
i :integer;
const
total=100;
begin
n:=vararraycreate([1,5]),varinteger);
n[1]:=strtoint(e1.text);
n[2]:=strtoint(e2.text);
n[3]:=strtoint(e3.text);
n[4]:=strtoint(e4.text);
n[5]:=strtoint(e5.text);
for i=1 to 4 do
begin
n[i]=random(total);
dec(total,n[i]);
end;
n[5] := total;
end;
其中e1,e2等是 label,调试时出错,提示not enough parameters
declaration expected but 'for' found
undeclared identifier:'n'
n2:= rand(100-n1);
n3:= rand(100-n1-n2);
n4:= rand(100-n1-n2-n3);
n5:= 100-n1-n2-n3--n4;
设有5个label,分别是e1,e2,e3,e4,e5
把这个放入你的buttonclick程序中,试试看(dephi5下自己调试通过):var
n:array [1..5] of integer;
i, j, k, temp, total:integer;
begin
total := 100;
for i:=1 to 4 do
begin
n[i] := random(total);
dec(total,n[i]);
end;
n[5] := total;
for i:=1 to 5 do
begin
j := random(5)+1; k:=random(5)+1;
temp := n[j]; n[j] := n[k]; n[k] := temp;
end; e1.Caption := inttostr(n[1]);
e2.Caption := inttostr(n[2]);
e3.Caption := inttostr(n[3]);
e4.Caption := inttostr(n[4]);
e5.Caption := inttostr(n[5]);
end;
必然会有一个数在20 以内的。
顶多把顺序改变以下。
可以有0吗? 如果有的话更好办。
i[1]:=Random(100);
i[2]:=Random(100-i[1]);
i[3]:=Random(100-i[1]-i[2]);
......
这样做有任何问题吗?
顺便一说,这好像和楼上 V_Lucky(Lucky) 的一样啊。哈哈
************************************************************
回复人: windindance(风之舞) (2001-12-20 10:26:49) 得0分
to dai1016(小次郎) :
必然会有一个数在20 以内的。
顶多把顺序改变以下。
************************************************************5个数字的和为100, 当然有一个在20以内啦。 有什么问题?????
如果5个都在20以上,21*5=105 哈哈