Пожалуйста, не блокируйте рекламу!

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн lsr

  • *****
  • 1268
  • Репутация: +247/-6
  • Пол: Мужской
  • http://sl-gdl.com
Не корректное значение рэндома - Rnd
« : Августа 14, 2012, 09:36:21 »

Test

Каким образом можно прекратить/изменить выполнение RND() или выйти из цикла в случае некорректного значения Rnd ?

В общем есть 7 слоев фрагментов из 16 возможных, необходимо тиражировать по дуге  Fragment2  в случайном порядке. В некоторых случаях на одном шаге отображаютcя все слои,  вероятно RND принимает значение = 0, а такого слоя не существует, вот и клепает все слои.
Пробовал делать ограничение через Values - тоже не прокатило. Запарился что-то, не могу сообразить как устранить глюк. Конечно можно создать копию на плане и там рэндом примет корректные значения, но сие не есть кашерно.
FOR N=1 to NP
ADD2 0, RAD_out
IF  rnd(16) < EPS  THEN 7
FRAGMENT2 rnd(16),0
7:
DEL 1
  ROT2 ANG
  NEXT N
DEL NP
Элемент приложен.
Можно конечно ввести доп. переменную и сгенерировать новое значение напр.
RN=rnd(NC)
IF RN-EPS < rnd(2) THEN RN=1
FRAGMENT2 RN,1
Опять же это лишь случайное устранение проблемы, как собственно и сама RND.
Есть ли другое решение?
« Последнее редактирование: Августа 14, 2012, 09:37:33 от lsr »

*

Оффлайн SABRUS

  • ***
  • 212
  • Репутация: +44/-1
  • лучше день потерять...
Re: Не корректное значение рэндома - Rnd
« Ответ #1 : Августа 14, 2012, 09:46:03 »
м.б. rnd(15)+1 ?

*

Оффлайн lsr

  • *****
  • 1268
  • Репутация: +247/-6
  • Пол: Мужской
  • http://sl-gdl.com
Re: Не корректное значение рэндома - Rnd
« Ответ #2 : Августа 15, 2012, 07:00:05 »
Спасибо попробую по вашему

Только я пробовал делать почти так же.
Заводил ограничение в скрипт параметров VALUES "fr" range [1,15]

fr=fr+1
Fragment2 RND(fr),1

Не работал мой скрипт.

Upd
Ура, спасибо огромное! Сработал Ваш вариант. Только я не пойму в чем разница между моим приращением в единичку и Вашим.
fr=fr+1 и rnd(15)+1 на мой взгляд одно и то же.

В школе арифметику не уважал, да и давно это было.

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +634/-14
  • Пол: Мужской
Re: Не корректное значение рэндома - Rnd
« Ответ #3 : Августа 15, 2012, 14:15:41 »
В справке написано:
RND (x) Возвращает случайное значение действительного типа между 0.0 и х. (х > 0.0)
Тут наверно надо было написать ни "между", а "от 0.0 и до х включительно". Т.е., и 0.0, и х включаются в эти значения.

 

Похожие темы

  Тема / Автор