Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Нет, я хочу чтобы ты реально бросил программировать. Это не твое!
Но если тебе уж так хочется, то не напрягая людей глупыми вопросами. Нормальному человеку такой диапазон даже в голову не придет выставить. Не говоря уже о постановке вопроса. Не хочешь читать хелп?
Нет, я хочу чтобы ты реально бросил программировать. Это не твое!
Но если тебе уж так хочется, то не напрягая людей глупыми вопросами. Нормальному человеку такой диапазон даже в голову не придет выставить. Не говоря уже о постановке вопроса.
вот тут ты немного не прав. такой диапазон не случайно мне нужен. это мне нужно для генерации seed. дело в том что есть один проект под названием oblige так вот вышла новая версия и там максимальный seed как раз это число. вот поэтому я и спрашиваю что можно сделать
Если загрузить указанное значение в "Delphi-аналог", то компилятор выдаст такое сообщение: Constant expression violates subrange bounds по вполне понятным причинам. Не берусь сейчас судить о том как именно устроена необушная команда, но теоретически она не может правильно работать в диапазоне, превышающем 2147483647, а просто будет выдавать разную фигню, что она весьма успешно и делает.
Цитатаkop9000 ()
что можно сделать?
Боюсь в данной ситуации ничего, потому-что в следующий раз найдется еще какой-нибудь seed с сотней разрядов, а потом с миллионом, и NB "переварить" такие значения просто не сможет в принципе.
Остается лишь искать другие приемы реализации задуманного. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Peter спасибо. я тут думаю может получится с помощью функции это сделать например vscrips или jsrips. только я не знаю что выбрать лучше. Или это бесполезно?
Сообщение отредактировано kop9000 - Пн, 10 Октября 2016, 13:50
может получится с помощью функции это сделать например vscrips или jsrips. только я не знаю что выбрать лучше.
Возможно, а лучшим решением был бы плагин, но такой мне неведом, увы... Не возьмусь советовать. Надо тебе поспрошать людей, более осведомленных в скриптовых языках. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Peter спасибо. я тут думаю может получится с помощью функции это сделать например vscrips или jsrip
За vbs не отвечу, а в js это фантастика, короче невозможно. В нем для хранения числа используется 64 бит из которых на сами цифры приходится только 52 бит, остальное это позиция десятичной точки. Поэтому с увеличением разрядности теряется точность, число просто не помещается в эти 52 бит и случайное число будет пои стене случайным не входящим вообще ни в какой диапазон от чего-то до чего-то. И скорее всего чтоб поместиться предстанет в виде экспонециальной записи, типа так: 574156e+12 "Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
Для тех когда кого то вдруг заинтересует такой вопрос (хотя я в этом лично очень сомневаюсь), решить его достаточно просто. Можно просто разбить число на несколько чисел, например вышеуказанное 9007199254740991 разбить на
90071992 54740991
из этих чисел сгенерировать нужное и объединить полученные результаты. kop9000, объединить, а не сложить.
Или генерировать по одной цифре и в итоге так же объединить полученные результаты.
Например если число должно состоять именно из такого количества цифр и начальные нули не играют роль
mishem, я так понял что в твоих примерах минимальное количество символов везде равно 16. Так что решил дополнить твой вариант еще примером где количество символов может быть от 1 до 16 символов. Не самый элегантный вариант, то что первое в голову пришло.
я так понял что в твоих примерах минимальное количество символов везде равно 16.
Нет, в третьем действительно ошибка, там подразумевалось что если будет 0, то его удалить. Например первое число 0 и переменная результата еще пустая - удаляем, второе 0...-удаляем, после если переменная не пустая, зпаписываем нули.
Я примеры дал людям думать, а не kop9000. Он твой пример скопировал и сейчас опять вопросы последуют.
Хотя видал, ошибку нашел. Молодец! Пример под его нужды не подошел, значит ошибка. Главное было пояснить как можно получать произвольные большие числа. Хотя повторюсь, вряд ли это кому нибудь понадобится. Не хочешь читать хелп?
Некоторое замечание... Если говорить чисто теоретически, то у этих всех примеров есть одно "недоработанное место" - нет контроля результата на вхождение в заданный диапазон. Ведь (ТЕОРЕТИЧЕСКИ) могут получиться и все 16 девяток.... Или в указанном примере на второй позиции окажется, скажем, 8 вместо нуля.... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Кстати, mishem, переходя дорогу с односторонним движением, в какую сторону ты смотришь?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
переходя дорогу с односторонним движением, в какую сторону ты смотришь?
Суслик, это такой зверь, который поднимается на задние лапки и смотрит вперед. Не летит ли орел, не бежит ли лиса, не ползет ли змея, и самые внимательные получают бампером в лоб. Не хочешь читать хелп?
Ну не мог же я сам себя откровенно закртиковать... хотя не буду спорить... по восприятию пример атас. Особенно на третий день прочтения....
ЦитатаPeter ()
Ведь (ТЕОРЕТИЧЕСКИ) могут получиться и все 16 девяток....
Не, я в своем примере вроде предусмотрел такую возможность, там если я не напутал, максимальное число ограничено тем которое прописано в переменной [Num] (SetVar "[Num]" "9007199254740991"). Выше него получиться случайное не должно. Именно поэтому вначале я разбиваю это число посимволно и каждый символ заношу в массив [arrNum[i]] "Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
Не, я в своем примере вроде предусмотрел такую возможность, там если я не напутал, максимальное число ограничено тем которое прописано в переменной [Num] (SetVar "[Num]" "9007199254740991"). Выше него получиться случайное не должно. Именно поэтому вначале я разбиваю это число посимволно и каждый символ заношу в массив [arrNum[i]]
Суслик, это такой зверь, который поднимается на задние лапки
Я вполне конкретно спросил:
ЦитатаPeter ()
в какую сторону ты смотришь?
Ну, это если ты не "из сусликов".
Цитатаmishem ()
Так если первая будет 8, все остальные могут быть 9.
В действительности нам до-лампочки какая цифра будет первая, вторая, третья и т.д., если количество цифр (разрядность) меньше количества циферок заданной границы диапазона. А вот если совпадает (больше быть не может), то и надо проверять, чтобы абсолютное значение (не количество циферок) было не больше заданного. Примерно так:
Код
SetVar "[Result]" "0" SetVar "[R]" "0" StrLen "[InPut]" "[Len]" Random "[Len]" "[Len]" SetVar "[i]" "1" WhileEx "([R] <= [InPut]) AND ([i] <= [Len])" SetVar "[Result]" "[R]" Random "9" "[Num]" If "[R]" ">" "0" SetVar "[R]" "[R][Num]" Else If "[Num]" ">" "0" SetVar "[R]" "[Num]" EndIf EndIf Math "[i]+1" "0" "[i]" EndWhile ClearVariables "[i],[Len],[Num],[R]" AlertBox "" "[Result]"
где: InPut - ввод, Result - вывод
Наиболее разумно всю эту ботву оформить в виде функции. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
то и надо проверять, чтобы абсолютное значение (не количество циферок) было не больше заданного.
Вот кстати пример элегантного кода. Единственно, вроде как получается, что количество символов в Result всегда будет на одну меньше чем задано в InPut.
Цитатаmishem ()
ак если первая будет 8, все остальные могут быть 9. и т.д
Ну да, поэтому я пересозданию массив исходных значений, если случайное число для первого символа меньше оригинала...
Единственно, вроде как получается, что количество символов в Result всегда будет на одну меньше чем задано в InPut.
Потому что строчку SetVar "[Result]" "[R]" нужно поставить после или перед Math "[i]+1" "0" "[i]"
Random "[Len]" "[Len]" Может выдать 0, и тогда не будет никакого числа.
ЦитатаPeter ()
Я вполне конкретно спросил
Я тебе уже отвечал по моему. Смотрю в обе стороны и по нескольку раз. Скорость движения человека во много меньше скорости движения автотранспорта. Пока дойдешь до средины, не одна машина может появиться.
То же самое и когда за рулем. Плюс еще если стойка попадает в поле зрение наклоняюсь вперед/назад чтобы быть уверенным что стойка ничего не скрывает. На определенном расстоянии и под определенным углом стойка может скрыть камаз, и даже поезд. Не хочешь читать хелп?
Потому что строчку SetVar "[Result]" "[R]" нужно поставить после или перед Math "[i]+1" "0" "[i]"
В обоих случаях ответ неверный. Присваивание результата конечной переменной должно происходить только ПОСЛЕ проверки выполнения условия, т.е. СРАЗУ после строки:
Код
WhileEx "([R] <= [InPut]) AND ([i] <= [Len])"
А ошибка, влекущая за собой число циферок в результате всегда меньше 16, заключается в том, что я в проверке условия цикла нашлепал AND, а надо было OR.
Цитатаmishem ()
Смотрю в обе стороны и по нескольку раз. Скорость движения человека во много меньше скорости движения автотранспорта. Пока дойдешь до средины, не одна машина может появиться.
То же самое и когда за рулем. Плюс еще если стойка попадает в поле зрение наклоняюсь вперед/назад чтобы быть уверенным что стойка ничего не скрывает. На определенном расстоянии и под определенным углом стойка может скрыть камаз, и даже поезд.
Расширенный ответ! mishem, знаешь кто такой зануда? Это человек, который на стандартный (дежурный) вопрос "Как дела?" начинает рассказывать как идут его дела.
Шутка. Впрочем, мне ведь тоже только дай повод на "про оси?"
А спросил я потому-что есть такая фраза: "Хороший программист это тот, которых, переходя дорогу с односторонним движением, смотрит в обе стороны!" Что ж, сказано неплохо и правильно. Я и сам нередко ею "оперирую" Высказывание это приписывается некоему Дагу Линдеру (какому-то путешественнику), но никакой информации о нем (касаемо программирования) я так и не сумел отыскать. Может все это - миф, а может просто плохо искал, не знаю...
Добавлено (16 Октября 2016, 00:09) --------------------------------------------- Да, пардон, забыл...
Цитатаmishem ()
Зачем здесь круглые скобки?
Так просто удобнее воспринимать текст. Да и вообще, я крайне редко использую WhileEx, потому и косячу иногда. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
где вообще ты создал переменную InPut? её попросту нет
Добавлено (17 Октября 2016, 01:22) --------------------------------------------- Вот так надо и не нужно код резать. я уже научился думать
Код
SetVar "[InPut]" "9007199254740991" SetVar "[Result]" "0" SetVar "[R]" "0" StrLen "[InPut]" "[Len]" Random "[Len]" "[Len]" SetVar "[i]" "1" WhileEx "([R] <= [InPut]) AND ([i] <= [Len])" SetVar "[Result]" "[R]" Random "9" "[Num]" If "[R]" ">" "0" SetVar "[R]" "[R][Num]" Else If "[Num]" ">" "0" SetVar "[R]" "[Num]" EndIf EndIf Math "[i]+1" "0" "[i]" EndWhile ClearVariables "[i],[Len],[Num],[R]" AlertBox "" "[Result]"
только вот есть один баг. он часто выдаёт цифру 0
Добавлено (17 Октября 2016, 01:35) --------------------------------------------- щас получу наезды за не внимательность. через 5 мин скину правельный пример
Добавлено (17 Октября 2016, 01:42) --------------------------------------------- вот правельный пример
Код
SetVar "[InPut]" "9007199254740991" SetVar "[Result]" "0" SetVar "[R]" "0" StrLen "[InPut]" "[Len]" Random "[Len]" "[Len]" SetVar "[i]" "1" WhileEx "[R] <= [InPut] OR [i] <= [Len]" SetVar "[Result]" "[R]" Random "9" "[Num]" If "[R]" ">" "0" SetVar "[R]" "[R][Num]" Else If "[Num]" ">" "0" SetVar "[R]" "[Num]" EndIf EndIf Math "[i]+1" "0" "[i]" EndWhile ClearVariables "[i],[Len],[Num],[R]" AlertBox "" "[Result]"
только странно что он всегда генерирует все 16 цифр. и редко 15 цифр
Сообщение отредактировано kop9000 - Пн, 17 Октября 2016, 01:55