Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 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)
 
Ответить с цитированием
Старый 12.11.2010, 05:59   #2
Trazzy
Разработчик
 
Аватар для Trazzy
 
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений
(для 225 пользователей)
Ответ: Прошу помощи в создании рандомного массива

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

Сообщение от Rameron Посмотреть сообщение
...Random(75) по непонятным причинам никогда не равно нулю...
Странно, а у меня почему-то равен)) может стоит новый телефон с компом купить?!

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

и у тебя там exit. вместо end; стоит.. не порядок!..
(но скорее всего это опечатка, насколько я понимаю)
__________________
Уважай собеседника, а лучше подари ему +
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Rameron (12.11.2010)
Старый 12.11.2010, 08:03   #3
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Прошу помощи в создании рандомного массива

Думаю, подойдет этот алгоритм.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (12.11.2010)
Старый 12.11.2010, 10:06   #4
Rameron
Оператор ЭВМ
 
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
Ответ: Прошу помощи в создании рандомного массива

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


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



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

и у тебя там exit. вместо end; стоит.. не порядок!..
(но скорее всего это опечатка, насколько я понимаю)
Оу, не заметил Да, опечатка, спасибо, выручил
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com