Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Есть функция, я не помню где я её взял: On Error Resume Next intA = [%1] intB = [%2] intC = [%3] If intC <= intB-intA+1 then Generate Sub Generate Dim source() Dim target() ReDim source(intB-intA) intSrc = UBound(source) For counter = 0 to intSrc source(counter) = intA intA=intA+1 Next Randomize Timer Redim target(intSrc) For El = intSrc To 0 STEP -1 tmp = INT(RND * (El + 1)) target(El) = source(tmp) source(tmp) = source(El) Redim Preserve source(El) Next For El = 0 To intC-1 nbSetVar "[AA"&El+1&"]", target(El) Next End Sub
Она генерирует случайные числа из определенного интервала, все нормально работает, но на некоторых компьютерах не выполняется - даёт надпись: Класс не зарегистрирован Причем это и в XP и 7-ке, и в Висте, т.е. от самой ОС не зависит, как я понял, а зависит от настройки, но вот что именно я не знаю, может кто помочь? Может, кто подскажет, что должно быть особенно установлено в системе, чтобы эта функция работала? Вик
Сообщение отредактировано wiksl - Вт, 01 Октября 2013, 21:31
wiksl, попробуй на тех компах, где не работает запустить другую функцию можно попробовать эту на JScript:
Код
{NeoBook Function} Version=5,80 Language=JScript Param=[%1]|Number|нижняя граница диапазона Param=[%2]|Number|верхняя граница диапазона Param=[%3]|Variable|Результат {End} function randomer(m,n){ if(m==0){m=1;} m=parseInt(m),n=parseInt(n); return Math.floor(Math.random()*(n-m+1))+m;} nbSetVar('[%3]',randomer('[%1]','[%2]'))
А вот с vbs, дело темное Я сколько не пытался найти решение ошибки класса, так и не смог найти универсального... А у самого знания vbs на уровне "хелло ворд" Тут только Дембель может подсказать, он в нем хорошо шарит
Добавлено (02 Октября 2013, 09:58) --------------------------------------------- Кстати, когда у меня были ошибки в вбс и ява (увы бывает и тут) на разных компах То делал рандом диапазона на НБ
Код
.обнуляем предыдущий результат SetVar "[result]" "" .нижняя граница SetVar "[min]" "2" .верхняя граница SetVar "[max]" "12" .случайное число Random "[max]" "[res]" .магия)) Math "(0,[res]*([min]-[max]+1))+[max]" "0" "[result]"
Адаптировал функцию из JS
Добавлено (02 Октября 2013, 10:18) --------------------------------------------- Обернул в функцию НБ
Код
{NeoBook Function} Version=5,80 Language=NeoBook Comment=Случайное число из заданного диапазона Param=[%1]|Number|нижняя граница диапазона Param=[%2]|Number|верхняя граница диапазона Param=[%3]|Variable|Результат {End} If "[%1]" "=" "0" Math "1" "0" "[%1]" EndIf If "[%2]" "=" "0" Math "999" "0" "[%2]" EndIf Random "[%2]" "[%3]" If "[%3]" "<" "[%1]" Math "(0,[%3]*([%2]-[%1]+1))+[%1]" "0" "[%3]" EndIf
Проверил, вроде все работает нормально... Если мин и макс оставить пустыми, то выдаст число от 1 до 999
Сообщение отредактировано Сергей - Пт, 18 Июля 2014, 00:19
Можно и на НБ, только я наверное не так описал функцию Она должна брать в определенном интервале заданное число разных случайных чисел, т.е. задаю например 1,5,5 получаю 1,3,4,2,5 и т.д. если б только одно число надо было я б и функцию не использовал, хватило бы команды: Random, я делал свою функцию, но по сравнению с той что выложил, она работает так медленно, что дляже для 6 чисел это уже ощутимо. Вик