команда random

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

команда random

Post by Mihail »

есть такая команда random на инжекте? к примеру я задаю несколько переменных, например время:
a=500ms
b=600ms
c=700ms
как мне сделать так что if "какое-нибудь условие" then
random(a,b,c) чтобы он случайным образом выбирал задержку a, b или c?
буду очень признателен!
Solaire
Posts: 163
Joined: 2005-05-21 07:12:12
Location: DRW

Post by Solaire »

Если тебе нужны именно такие задержки, сделай так:

Code: Select all

VAR R
if ........................ then
   R=UO.Random(3)*100+400
endif
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

Solaire wrote:Если тебе нужны именно такие задержки, сделай так:

Code: Select all

VAR R
if ........................ then
   R=UO.Random(3)*100+400
endif

спасибо большое.. :)
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

а если к примеру мне надо установить рандом между 4-мя переменными?
но чтобы они как бы не повторялись.. допустим есть у меня a, b, c и d. сначала он выбирает любую из этих переменных, затем выбирает из оставшихся трех, затем из двух ну и последнюю..
Solaire
Posts: 163
Joined: 2005-05-21 07:12:12
Location: DRW

Post by Solaire »

Mihail wrote:а если к примеру мне надо установить рандом между 4-мя переменными?
но чтобы они как бы не повторялись.. допустим есть у меня a, b, c и d. сначала он выбирает любую из этих переменных, затем выбирает из оставшихся трех, затем из двух ну и последнюю..

Вот. Мучалась долго. :) Выдает элементы массива а в призвольном порядке.

Code: Select all

sub Rand()
   VAR R, k=3, i=0
   DIM a[4], T[4]
   a[0]='500'
   a[1]='600'
   a[2]='700'
   a[3]='800'
   repeat
      R=UO.Random(k)
      T[i]=a[R]
      a[R]=a[k]
      a[k]=T[i]
      k=k-1
      i=i+1
   until k==0
   T[i]=a[k]
    for i=0 to 3
      UO.Print(T[i])
      wait(1000)
   next
end sub
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

Solaire wrote:
Mihail wrote:а если к примеру мне надо установить рандом между 4-мя переменными?
но чтобы они как бы не повторялись.. допустим есть у меня a, b, c и d. сначала он выбирает любую из этих переменных, затем выбирает из оставшихся трех, затем из двух ну и последнюю..

Вот. Мучалась долго. :) Выдает элементы массива а в призвольном порядке.

Code: Select all

sub Rand()
   VAR R, k=3, i=0
   DIM a[4], T[4]
   a[0]='500'
   a[1]='600'
   a[2]='700'
   a[3]='800'
   repeat
      R=UO.Random(k)
      T[i]=a[R]
      a[R]=a[k]
      a[k]=T[i]
      k=k-1
      i=i+1
   until k==0
   T[i]=a[k]
    for i=0 to 3
      UO.Print(T[i])
      wait(1000)
   next
end sub

спасибо большое, теперь буду долго пытаться осмыслить прочитанное :)
Solaire
Posts: 163
Joined: 2005-05-21 07:12:12
Location: DRW

Post by Solaire »

Mihail wrote:спасибо большое, теперь буду долго пытаться осмыслить прочитанное :)

Да не за что. Мне самой интересно стало; полезная функция, оказывается, этот рандом. :)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Хмм, я бы вставил проверку что k = i. Чтобы уже без рандома возвращало единственное значение. Я честно говоря не уверен (и лень проверять) как скриптовый модуль воспримет пожелание вернуть random(0)
Solaire
Posts: 163
Joined: 2005-05-21 07:12:12
Location: DRW

Post by Solaire »

Edred wrote:Хмм, я бы вставил проверку что k = i. Чтобы уже без рандома возвращало единственное значение. Я честно говоря не уверен (и лень проверять) как скриптовый модуль воспримет пожелание вернуть random(0)

Так у меня так и есть.
Вот здесь: T[i]=a[k]
Все нормально работает, тестила.
Post Reply