Author Topic: Выбор ранд.переменной из списка, новичек, ПОДСКАЖИТЕ  (Read 1252 times)

0 Members and 1 Guest are viewing this topic.

iliddannnn

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Добрый день всем!

$1=100
$2=200
$3=300
$4=350

$rnd=RND(1,4)

$a=$a+strconcat ("$" , $rnd)

LOGWRITE ($a)

Переменные 1-4 имеют свое значение в цифрах. Мне нужно что бы рандомно выбиралась переменная, и присвоенное значение этой случайной переменной добавлялось к переменной $a, и выводилось в лог.
На выходе с этого скрипта я получаю в лог
23:06:39 0+"$51"
11:41:46 0+"$2"
11:41:47 0+"$32"
11:41:48 0+"$38"
То есть выводится  -  0+"$51". Он выводит как набор символов эту строку, хотя по идее $51 должно восприниматься прогой как значение переменной $51. Как можно заставить читать ее?


Варинт тип такого RNDFROM ($1, $2, $3) работает, но дело в том, что мне нужно знать какую именно переменную выбрал  рандом, и присваивать ей значение 0 после выполнения скрипта (в моем случае после вывода суммы в лог). То есть все работает, но не знаю как в этом случае присовоить выбранной переменной ноль. Переменных больше чем 4, и некоторые из них имеют одинаковые значения. Прошу помощи)))) :)


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Там где нужно применение группы однотипных переменных и придумали массивы.

Code: (clickermann) [Select]
// создаём массив со значениями
STRSEPARATE("100:200:300:350", ":", $arr)

// в $rnd случайный индекс массива от 0 до 3
$rnd = RND(0, 3)

// прибавляем к $a значение массива по твоему рандомному индексу
$a = $a + $arr[$rnd]

LOGWRITE($a)

// присваиваем значение 0
$arr[$rnd] = 0
« Last Edit: September 17, 2020, 04:13:14 PM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Ну можно конечно ещё через GETVAR SETVAR, но это не так гибко и запутаться гораздо легче.
К тому же лучше сразу привыкать делать нормально, как есть почти во всех языках, а не как в паре штук.

Внимание! Не повторять дома!
Code: (clickermann) [Select]
$1 = 100
$2 = 200
$3 = 300
$4 = 350

$rnd = RND(1, 4)
$name = strconcat("$", $rnd)
$a = $a + GETVAR($name)

LOGWRITE($a)

SETVAR($name, 0)

// что стало с переменными
LOGWRITE($1, "  ", $2, "  ", $3, "  ", $4)

HALT


iliddannnn

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
ОГРОМНОЕ  ;) ;) ;)