Topic: Random

Ув. Дмитирий.
Trunc(Random*10) выдает нам числа от 0 до 10.
1. Как сделать чтобы не было числа 0?
2. Как сделать чтобы Random не повторял те же числа что была уже выдана? Т.е. один раз если уже выдал 3 то на следующем не повторялся.

2 (edited by newusr 2018-09-07 11:00:20)

Re: Random

Примерно так:

var x,y: integer=0;
.......
repeat
   while x = y do y:=Trunc(Random*10);
   x:=y;
until x <> 0;

будет выдавать случайные не повторяющиеся числа от 1 до 9, если нужно до 10, то умножать на 11: Trunc(Random*11)

Re: Random

Спасибо. У меня вот такой скрипт, как там это прикрутить?

procedure form2_Button5_OnClick (Sender: TObject; var Cancel: boolean);
begin
      form2.Edit1.Value:= Trunc(Random*10);
end;

Re: Random

В самом начале кода вставить:
var x,y: integer=0;
если слово var уже есть, то повторять не надо, просто вставить x,y: integer=0;, и если переменные x, y уже есть нужно выбрать другие имена

procedure form2_Button5_OnClick (Sender: TObject; var Cancel: boolean);
begin
repeat
   while x = y do y:=Trunc(Random*10);
   x:=y;
until x <> 0;     
form2.Edit1.Value:= x;
end;

Re: Random

не получается