如何产生一组最随机的随机数(20分)

  • 主题发起人 主题发起人 lance2000
  • 开始时间 开始时间
L

lance2000

Unregistered / Unconfirmed
GUEST, unregistred user!
如何产生1..10的一个随机序列。
思路一:
把1..10的全排列放入一数组中,随机取一组。
效率可想而知。但真正随机。

思路二:
for i:=1 to 10 do
a:=i;
然后每产生一个随机数,就把该数从数组中删除,但我觉的不够随机。
各位有什么高见?
 
用Randomize过程和random函数.
 
最随机的情况就是谁也不知道是怎么回事:)
所以,即使取 0..99 的随机数 100 次出现了很多重复,我觉得也是正常的。
 
在Randomize函数和random函数中加入sleep(n).
 
for i:=1 to 10 do
ss:=i;

randomize;
for i:=1 to 10 do
begin
j:=random(10-i);
a:=ss[j];
{在ss[]中删除第j个数,重组数组ss}
end;

 
重组数组太麻烦,还是用 TStrings 方便

procedure kdjf;
var
tmp: TStrings;
a: array of integer;
j: Integer;
begin
tmp:=TStringList.Create;
for i:=1 to 10 do tmp.Addpend(IntToStr(i));

randomize;
sleep(random(5));
for i:=1 to 10 do
begin
j:=random(10-i);
a:=StrToInt(tmp.Strings[j]);
tmp.Delete(j);
end;
tmp.Free;
end;
 
各位抱歉,很长一段时间我不能登陆大富翁,现在给分
 
多人接受答案了。
 
现在给分
 
我不能结束帖子了
 
一个是有放回的抽样, 一个是不放回的抽样, 两个分布不同
 
多人接受答案了。
 
后退
顶部