Показать сообщение отдельно
Старый 12.11.2010, 02:19   #1
Rameron
Оператор ЭВМ
 
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
Прошу помощи в создании рандомного массива

Задача состоит в том, чтобы в элементах некого массива а[0..73] рандомно разместить числа от 0 до 73.

procedure createRanBase;
var 
m,n,x:integer;
var 
isInBase:boolean;
begin
    n
:=0;
    
repeat
    begin
        isInBase
:=false;
        
Randomize;
        
:= Random(74);
        for 
:= 0 to 73 do
        
begin
            
if intRandomBase[m] = x then 
                begin
                    isInBase
:=true;
                    break;        
                
end;
        
end;
        if 
isInBase=false then
        begin
            intRandomBase
[n] := x;
            
n:= 1;
        
end;
    
end;
    
until n=74;
exit. 
Программа зацикливается. При замене Random(74) на Random(75), программа работала нормально, но в массив заносилось ненужное число 74.
Вопрос:
В чем проблема?

Кстати, Random(75) по непонятным причинам никогда не равно нулю...

И наконец появился еще один вопрос - какая-же это к черту рандомность? Можно-ли как-то модифицировать формулу, чтобы значения были более рассеяны?
(Offline)
 
Ответить с цитированием