请教!!!!!!随机数的问题

betteryang 2003-12-03 11:06:32
怎么在1——100中取N个随机数,使他们想加的结果是100(可以重复)!!
先谢谢各位了!
...全文
36 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgqTiger 2003-12-03
  • 打赏
  • 举报
回复
Var array Temp[1..N] of Integer;
...
for i:=1 to N do
begin
temp[i]:=random(100);
end;

liyangyao970 2003-12-03
  • 打赏
  • 举报
回复
up,好多好繁哦
vavyboyleon 2003-12-03
  • 打赏
  • 举报
回复
我的,先确定随机数的个数
procedure TForm1.Button1Click(Sender: TObject);
var
CountOfRandom,NowSum,NowRandom,NowCount:integer;
IsCompleted:Boolean;
begin
label1.Caption:='';
CountOfRandom:=strtoint(edit1.Text);
NowSum:=0;
IsCompleted:=False;
while not Iscompleted do
begin
Iscompleted:=False;
for NowCount:=1 to CountOfRandom-1 do
begin
Iscompleted:=false;
NowRandom:=Random(100-NowSum);
NowSum:=NowSum+NowRandom;
if (NowCount<(CountofRandom-1))and(nowSum>=100)then break
else
begin
Label1.Caption:=label1.Caption+inttostr(NowRandom)+'+';
IsCompleted:=True;
end;
end;
end;
Label1.Caption:=label1.Caption+inttostr(100-NowSum)+'=100';
end;
dulei115 2003-12-03
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
n, i, j, sum: integer;
a: array of integer;
begin
randomize;
n := 5;//这里改N的值
setlength(a,n);
for i := 0 to n - 1 do
a[i] := 0;
i := 0;
while i < n - 1 do
begin
a[i] := random(100) + 1;//0 <= rondom(num) < num
sum := 0;
for j := 0 to i do
sum := sum + a[j];
if sum < 100 then
i := i + 1;
end;
a[n - 1] := 100 - sum;
memo1.Lines.Clear;
for i := 0 to n - 1 do
memo1.Lines.Add(inttostr(a[i]));
end;
xiaoqiang123 2003-12-03
  • 打赏
  • 举报
回复
N个?是不是加起来是100就行了,可能这次是5个,下次是6个,是吗?

楼主还在吗?有事CALL俺!
耙子 2003-12-03
  • 打赏
  • 举报
回复
是不是100个数中每次不能重复抽取?

这类的题目用递归写法会很简单,我就不写了,哪位写个递归的给他就行了
richlife 2003-12-03
  • 打赏
  • 举报
回复
设计一个EDIT规定一下N的个数,就OK了!
xiaoqiang123 2003-12-03
  • 打赏
  • 举报
回复
N个?是不是加起来是100就行了,可能这次是5个,下次是6个,是吗?
火猴 2003-12-03
  • 打赏
  • 举报
回复
个人感觉n不应该用100,那样产生结果会用比较长的时间吧,没有试验只是感觉
火猴 2003-12-03
  • 打赏
  • 举报
回复
Randomize;
x:=random(n);//n为随机数的范围 0 <= X < n
lxhong1980 2003-12-03
  • 打赏
  • 举报
回复
n:= 0;

while n<> 100 do

begin
x1:= random(100)

x3:= random(100)

x3:=random(100)

x4:= random(100)

x5:= random(100)

n:= x1 + x2+ x3+ x4+X5;

end;
xiaoqiang123 2003-12-03
  • 打赏
  • 举报
回复
N个?是不是加起来是100就行了,可能这次是5个,下次是6个,是吗?
saien 2003-12-03
  • 打赏
  • 举报
回复
random(100)
smilelhh 2003-12-03
  • 打赏
  • 举报
回复
n:= 0;
while n<> 100 do
begin
x1:= 随机1
x3:= 随机2
x3:= 随机3
x4:= 随机4
x5:= 随机5
n:= x1 + x2+ x3+ x4+X5;
end;

5,392

社区成员

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

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