Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Нужно сделать так, чтобы команда Random генерировала случайное число не от ноля и до указанного мной, а от указанного мной и до указанного мной. Извините за товтологию.
Поскольку мне советовали воздержатся от плагинов, объясните мне, тупому пользователю, как сделать то, что я хочу средствами NB?
Смотрел форум, даже читал, разбирал код в исходнике, но когда понял, что мой IQ колеблется между валенками и банкой с огурцами, решил спросить Вас, умных людей…
Команда Random генерирует случайное число от 0 до указанного числа в команде, следовательно если надо от а до b, то получаем формулу: a+Random(b-a) т.е если надо интервал от 10 до 100 то получаем 10+ Random (90) конечно команду Random и присваение записывать по правилам NB Вик
Отлично. Теперь генерируется случайное число от и до. Как бы ещё сделать так, чтобы это число никогда не повторялось? Типа сравнение двух переменных: если число в переменной [Random] уже есть в списке, то не показывать/не выводить его.
Добавлено (16 Сентября 2012, 12:36) ---------------------------------------------
Quote (Melahor)
Как бы ещё сделать так, чтобы это число никогда не повторялось?
Хотя, это мелочь. Главное, что основная функция работает.
Дата: Вс, 16 Сентября 2012, 13:40 | Сообщение # 10
Ветеран форума
Проверенные
Сообщений: 553
Offline
Quote (Melahor)
Как бы ещё сделать так, чтобы это число никогда не повторялось?
Циклы в помощь...
Code
.Инициализация при старте программы .SetVar "[Base_Rand]" ";" .=================================== SetVar "[flag]" "1" While "[flag]" "=" "1"
.Подпрограмма .Генерирование случайного числа в [Random] ...Random "100" "[Random]"
.Поиск по базе SearchStr ";[Random];" "[Base_Rand]" "[nomFind]" "" .Проверка поиска If "[nomFind]" "=" "0" .Запись случайного числа в базу SetVar "[Base_Rand]" "[Base_Rand][Random];" .Если не найдено совпадений - выход из цикла SetVar "[flag]" "0" Else EndIf EndWhile .=================================== .Вывод неповторяющегося числа в [Random]
Поправил...
Добавлено (16 Сентября 2012, 13:40) --------------------------------------------- У вас всё получится, думаю с примерами станете лучше понимать NeoBook, главное - не бойтесь экспериментировать .
Вот пример получше, без бесконечных завихрений При старте страницы инициализируем счётчики
Code
.Инициализация при старте .Задаём [TextEntry1] и [TextEntry2] для подпрограммы Генерирования случайного числа SetVar "[TextEntry1]" "0" SetVar "[TextEntry2]" "100" .Инициализация при старте цикла SetVar "[Base_Rand]" ";" .Цикл найденных цифр SetVar "[While_i]" "0" .Всего возможно найденых цифр SetVar "[T_VsegoZifr]" "[TextEntry2]-[TextEntry1]+1"
При нажатии на кнопку с заголовком [Random]
Code
.Флаг выхода из цикла SetVar "[flag]" "1" While "[flag]" "=" "1" .Подпрограмма .Генерирование случайного числа от в [Random] .ОТ: [TextEntry1]=0 ДО: [TextEntry2]=100 ... Random "100" "[Random]"
.Поиск по базе SearchStr ";[Random];" "[Base_Rand]" "[nomFind]" "" .Проверка поиска If "[nomFind]" "=" "0" .Найдено x цифр SetVar "[While_i]" "[While_i]+1" .Запись случайного числа в базу SetVar "[Base_Rand]" "[Base_Rand][Random];" .Если не найдено совпадений - выход из цикла SetVar "[flag]" "0" Else If "[While_i]" ">=" "[T_VsegoZifr]" SetVar "[flag]" "0" SetVar "[Random]" "false" Else EndIf EndIf EndWhile .=================================== .Вывод неповторяющегося числа в [Random] If "[Random]" "=" "false" AlertBox "" "Все цифры найдены" Else .AlertBox "" "Вывод [Random]" EndIf
Random "100" "[Random]" стоит вместо вашей функции генерации от до. Если всё найдено - вывод сообщения 'Все цифры найдены'. Win7 Pro SP1 x64; NBv5.5.4rus,v5.6.2rus, v5.7.0en, Opera
Сообщение отредактировано Gorezcaid - Вс, 16 Сентября 2012, 13:03