Помощь - Поиск - Пользователи - Календарь
Полная версия: Функция с рандомом выдает одни и те же числа((
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
reill
Народ помогите функция глючит... выдает каждый раз одни и те же числа...
фот сама:

Код
function shot: longint;
var i,p:integer;
   t,tmp,uron:real;
   s,a,b,c:^integer;
 begin
 a:=0;
 b:=0;
 c:=0;
 p:=0;
 getmem(s,100);
 getmem(a,2);
 getmem(b,2);
 getmem(c,2);
   for i:= 1 to 40 do
     begin
     p:=random(3);
     case p of
       1: a^:=a^+random(10);
       2: b^:=b^+random(30);
       3: c^:=c^+random(15);
     end;
     s^:=3*a^+2*b^+c^;
     shot:=trunc(0.7*s^);
     p:=0;
 end;
 freemem(s,100);
 freemem(a,2);
 freemem(b,2);
 freemem(c,2);
end;


???
Forsag
Плохо читал "Delphi для чайников" ;D ;)
Подчти во всех языках программирования перед "random" надо использовать функцию randomize; (PS желательно в начале каждой подпрограммы, которая имеет рандомы)
Короче держи свой код:
Код
function shot: longint;
var i,p:integer;
   t,tmp,uron:real;
   s,a,b,c:^integer;
 begin
//------------------
 Randomize;
//----------------
 a:=0;
 b:=0;
 c:=0;
 p:=0;
 getmem(s,100);
 getmem(a,2);
 getmem(b,2);
 getmem(c,2);
   for i:= 1 to 40 do
begin
p:=random(3);
case p of
  1: a^:=a^+random(10);
  2: b^:=b^+random(30);
  3: c^:=c^+random(15);
end;
s^:=3*a^+2*b^+c^;
shot:=trunc(0.7*s^);
p:=0;
 end;
 freemem(s,100);
 freemem(a,2);
 freemem(b,2);
 freemem(c,2);
end;
Forsag
и вообще этому сообщению, к сожалению, здесь ни место  :(
Forsag
Извините ребята не туда передвинул... хотел в "Вопросы и ответы" для Паскаля, а получилось, то что получилось >:( sad.gif >:( ???
reill
а чего ты его сюда закинул??? Тут же асм??
А на счет randomize - я смотрю она мне ошибку не выдает  ну и подумал что так работает в дельфи)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.