Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Функция с рандомом выдает одни и те же числа((

Автор: reill 26.06.2003 21:33

Народ помогите функция глючит... выдает каждый раз одни и те же числа...
фот сама:

Код
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 26.06.2003 22:25

Плохо читал "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 26.06.2003 23:14

и вообще этому сообщению, к сожалению, здесь ни место  :(

Автор: Forsag 26.06.2003 23:22

Извините ребята не туда передвинул... хотел в "Вопросы и ответы" для Паскаля, а получилось, то что получилось >:( sad.gif >:( ???

Автор: reill 26.06.2003 23:24

а чего ты его сюда закинул??? Тут же асм??
А на счет randomize - я смотрю она мне ошибку не выдает  ну и подумал что так работает в дельфи)))