随机数问题!(100分)

  • 主题发起人 主题发起人 荒草地
  • 开始时间 开始时间

荒草地

Unregistered / Unconfirmed
GUEST, unregistred user!
求一随机数算法,从0-40中取随机的10个数,要求10个数不相同。弄了整整一天了也没有办法,很是头痛,请各位高手帮帮忙,最好有代码讲解,谢谢
 
建立一个0..9数组,数组初始化的时候每个都是大于40的数 然后就random(40),并且把这个random到的按照顺序放到数组的第1个 照这样做下去 不同的是 第2个开始random后去检查数组是否里面已经有了,已经有了重新random ....

我喜欢用土办法解决问题
 
呵呵,这个分我要了

var
MyArray:array[0..9] of integer ;//装你那10个数



procedure SelectTenNumber;
function IsExist(No:integer):Boolean;
var
i:integer;
begin
result:=false;
for i:=0 to 9 do
begin
if MyArray=No then
begin
result:=true;
break;
end;
end;
end;
var
z:integer;
stemp:integer;
begin
for z:=0 to 9 do
begin
repeat
Randomize;
stemp:=random(40+1);//注意random的取值范围是 0 <= X < Range
until IsExist(stemp)=false;
MyArray[z]:= stemp;
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
Exist : set of 0..40
//定义一个范围在0~40之间的集合
x, Count : integer ;
begin
Exist := []
//集合最初没元素
Count := 0
//计数=0
while Count<10 do //计数不足10个时继续
begin
x := random(41)
//随机数
if not (x in Exist) //未出现过,则集合中没有
then begin
Exist := Exist + [x]
//往集合中加这个数
Inc(Count)
//增加计数
end ;
end ;
for x:=0 to 40 do
if x in Exist then Caption := Caption + ' - ' + InttoStr(x)
//输出
end;
 
3楼和4楼可以去写6合彩软件了 速度这么快
 
彩票买过N次,就中过1次5块的[:(!][:(!][:(!]
 
4楼的代码正确,3楼的代码有点小问题,就是数组没初始化,这样初始值都是0对结果有点影响,最好加个for i := 0 to 9 do MyArray= -1;
 
后退
顶部