forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Прошу помощи в создании рандомного массива (http://forum.boolean.name/showthread.php?t=13704)

Rameron 12.11.2010 02:19

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

PHP код:

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) по непонятным причинам никогда не равно нулю...

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

Trazzy 12.11.2010 05:59

Ответ: Прошу помощи в создании рандомного массива
 
Цитата:

Сообщение от Rameron (Сообщение 168219)
Программа зацикливается...

Правильно, потому что у тебя массив [0..73], а ты в repeat..until сунул n=74, вместо n=73.. вот и вся проблема.

Цитата:

Сообщение от Rameron (Сообщение 168219)
...Random(75) по непонятным причинам никогда не равно нулю...

Странно, а у меня почему-то равен)) может стоит новый телефон с компом купить?! :-D

Цитата:

Сообщение от Rameron (Сообщение 168219)
...Можно-ли как-то модифицировать формулу, чтобы значения были более рассеяны?..

Посмотри тему Lib_rnd.. Большего пока не могу предложить))

и у тебя там exit. вместо end; стоит.. не порядок!.. :-D
(но скорее всего это опечатка, насколько я понимаю)

ViNT 12.11.2010 08:03

Ответ: Прошу помощи в создании рандомного массива
 
Думаю, подойдет этот алгоритм.

Rameron 12.11.2010 10:06

Ответ: Прошу помощи в создании рандомного массива
 
Цитата:

Сообщение от 2Fake (Сообщение 168232)
Правильно, потому что у тебя массив [0..73], а ты в repeat..until сунул n=74, вместо n=73.. вот и вся проблема.


Странно, а у меня почему-то равен)) может стоит новый телефон с компом купить?! :-D



Посмотри тему Lib_rnd.. Большего пока не могу предложить))

и у тебя там exit. вместо end; стоит.. не порядок!.. :-D
(но скорее всего это опечатка, насколько я понимаю)

Оу, не заметил:-D Да, опечатка, спасибо, выручил :)


Часовой пояс GMT +4, время: 03:35.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot