L
lha
Unregistered / Unconfirmed
GUEST, unregistred user!
看完这段讨论,我认为:"千中元" 根本就是罪魁祸首,帖了一段误人子弟的code
然后大家就开始讨论、改进这个算法。换一个算法不行吗?
这种东西,概率书上很多,不过惭愧的很,我都忘光了。
“这四个随机数中,任意两个地差值不大于5。”
假设 这四个数从小到大为 : A 、B、C、D
则 D - A < 6
我们先产生一个数 A 好了: A := Random(70)
然后我们产生两个随机数m,n, 其中 m!=n
0<m,n<6;
然后:
count := 0;
for i:= 0 to 5 do
if (i<>m) and (i<>n) then
begin
R[count]:= A+i;
Inc(count);
end;
“求在85到165之间的4个随机数,” 故 最后要把R中的数调整一下
上述的具体思想就是: 先产生最小的数A 然后认为;A+1,A+2,A+3,A+4,A+5均为候选的数
然后再随机淘汰这后面5个数中的任意两个。我写的code没有试过,可能有问题,但是这个方法绝对可以。
然后大家就开始讨论、改进这个算法。换一个算法不行吗?
这种东西,概率书上很多,不过惭愧的很,我都忘光了。
“这四个随机数中,任意两个地差值不大于5。”
假设 这四个数从小到大为 : A 、B、C、D
则 D - A < 6
我们先产生一个数 A 好了: A := Random(70)
然后我们产生两个随机数m,n, 其中 m!=n
0<m,n<6;
然后:
count := 0;
for i:= 0 to 5 do
if (i<>m) and (i<>n) then
begin
R[count]:= A+i;
Inc(count);
end;
“求在85到165之间的4个随机数,” 故 最后要把R中的数调整一下
上述的具体思想就是: 先产生最小的数A 然后认为;A+1,A+2,A+3,A+4,A+5均为候选的数
然后再随机淘汰这后面5个数中的任意两个。我写的code没有试过,可能有问题,但是这个方法绝对可以。