Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Peter, DEMBEL, YURIY  
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » рандомизация числа больше 9007199254740990 не работает
рандомизация числа больше 9007199254740990 не работает
kop9000Дата: Вс, 09 Октября 2016, 01:11 | Сообщение # 1
Ветеран форума
Random "9007199254740991" "[rand_seed]"

при рандомизации он просто в переменной пишет цифру 0. почему так и что можно сделать?


Сообщение отредактировано
kop9000 - Вс, 09 Октября 2016, 01:26
 
СообщениеRandom "9007199254740991" "[rand_seed]"

при рандомизации он просто в переменной пишет цифру 0. почему так и что можно сделать?

Автор - kop9000
Дата добавления - 09 Октября 2016 в 01:11
mishemДата: Вс, 09 Октября 2016, 13:22 | Сообщение # 2
Эксперт форума
Цитата kop9000 ()
и что можно сделать

Удалить NeoBook.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата kop9000 ()
и что можно сделать

Удалить NeoBook.

Автор - mishem
Дата добавления - 09 Октября 2016 в 13:22
kop9000Дата: Вс, 09 Октября 2016, 22:13 | Сообщение # 3
Ветеран форума
Цитата mishem ()
далить NeoBook.


Ты реально хочешь чтобы я бросил программировать. Сколько раз уже ты мне это говоришь. Или ты в том смысле что просто у программы есть ограничения?
 
Сообщение
Цитата mishem ()
далить NeoBook.


Ты реально хочешь чтобы я бросил программировать. Сколько раз уже ты мне это говоришь. Или ты в том смысле что просто у программы есть ограничения?

Автор - kop9000
Дата добавления - 09 Октября 2016 в 22:13
mishemДата: Вс, 09 Октября 2016, 22:44 | Сообщение # 4
Эксперт форума
Нет, я хочу чтобы ты реально бросил программировать.
Это не твое!

Но если тебе уж так хочется, то не напрягая людей глупыми вопросами.
Нормальному человеку такой диапазон даже в голову не придет выставить. Не говоря уже о постановке вопроса.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеНет, я хочу чтобы ты реально бросил программировать.
Это не твое!

Но если тебе уж так хочется, то не напрягая людей глупыми вопросами.
Нормальному человеку такой диапазон даже в голову не придет выставить. Не говоря уже о постановке вопроса.

Автор - mishem
Дата добавления - 09 Октября 2016 в 22:44
kop9000Дата: Пн, 10 Октября 2016, 00:12 | Сообщение # 5
Ветеран форума
Цитата mishem ()
Нет, я хочу чтобы ты реально бросил программировать.
Это не твое!

Но если тебе уж так хочется, то не напрягая людей глупыми вопросами.
Нормальному человеку такой диапазон даже в голову не придет выставить. Не говоря уже о постановке вопроса.


вот тут ты немного не прав. такой диапазон не случайно мне нужен. это мне нужно для генерации seed. дело в том что есть один проект под названием oblige так вот вышла новая версия и там максимальный seed как раз это число. вот поэтому я и спрашиваю что можно сделать
 
Сообщение
Цитата mishem ()
Нет, я хочу чтобы ты реально бросил программировать.
Это не твое!

Но если тебе уж так хочется, то не напрягая людей глупыми вопросами.
Нормальному человеку такой диапазон даже в голову не придет выставить. Не говоря уже о постановке вопроса.


вот тут ты немного не прав. такой диапазон не случайно мне нужен. это мне нужно для генерации seed. дело в том что есть один проект под названием oblige так вот вышла новая версия и там максимальный seed как раз это число. вот поэтому я и спрашиваю что можно сделать

Автор - kop9000
Дата добавления - 10 Октября 2016 в 00:12
mishemДата: Пн, 10 Октября 2016, 00:32 | Сообщение # 6
Эксперт форума
Цитата kop9000 ()
я и спрашиваю что можно сделать

Удалить NeoBook.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата kop9000 ()
я и спрашиваю что можно сделать

Удалить NeoBook.

Автор - mishem
Дата добавления - 10 Октября 2016 в 00:32
kop9000Дата: Пн, 10 Октября 2016, 01:10 | Сообщение # 7
Ветеран форума
Цитата mishem ()
Удалить NeoBook.


Да не собираюсь я её удалять. есть другие варианты?


Сообщение отредактировано
kop9000 - Пн, 10 Октября 2016, 01:11
 
Сообщение
Цитата mishem ()
Удалить NeoBook.


Да не собираюсь я её удалять. есть другие варианты?

Автор - kop9000
Дата добавления - 10 Октября 2016 в 01:10
PeterДата: Пн, 10 Октября 2016, 02:37 | Сообщение # 8
Админ NeoBook
Цитата kop9000 ()
почему так

Если загрузить указанное значение в "Delphi-аналог", то компилятор выдаст такое сообщение: Constant expression violates subrange bounds по вполне понятным причинам.
Не берусь сейчас судить о том как именно устроена необушная команда, но теоретически она не может правильно работать в диапазоне, превышающем 2147483647, а просто будет выдавать разную фигню, что она весьма успешно и делает.
:)

Цитата kop9000 ()
что можно сделать?

Боюсь в данной ситуации ничего, потому-что в следующий раз найдется еще какой-нибудь seed с сотней разрядов, а потом с миллионом, и NB "переварить" такие значения просто не сможет в принципе.
:)
Остается лишь искать другие приемы реализации задуманного.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата kop9000 ()
почему так

Если загрузить указанное значение в "Delphi-аналог", то компилятор выдаст такое сообщение: Constant expression violates subrange bounds по вполне понятным причинам.
Не берусь сейчас судить о том как именно устроена необушная команда, но теоретически она не может правильно работать в диапазоне, превышающем 2147483647, а просто будет выдавать разную фигню, что она весьма успешно и делает.
:)

Цитата kop9000 ()
что можно сделать?

Боюсь в данной ситуации ничего, потому-что в следующий раз найдется еще какой-нибудь seed с сотней разрядов, а потом с миллионом, и NB "переварить" такие значения просто не сможет в принципе.
:)
Остается лишь искать другие приемы реализации задуманного.

Автор - Peter
Дата добавления - 10 Октября 2016 в 02:37
kop9000Дата: Пн, 10 Октября 2016, 13:49 | Сообщение # 9
Ветеран форума
Peter спасибо. я тут думаю может получится с помощью функции это сделать например vscrips или jsrips. только я не знаю что выбрать лучше. Или это бесполезно?

Сообщение отредактировано
kop9000 - Пн, 10 Октября 2016, 13:50
 
СообщениеPeter спасибо. я тут думаю может получится с помощью функции это сделать например vscrips или jsrips. только я не знаю что выбрать лучше. Или это бесполезно?

Автор - kop9000
Дата добавления - 10 Октября 2016 в 13:49
PeterДата: Вт, 11 Октября 2016, 01:05 | Сообщение # 10
Админ NeoBook
Цитата kop9000 ()
может получится с помощью функции это сделать например vscrips или jsrips. только я не знаю что выбрать лучше.

Возможно, а лучшим решением был бы плагин, но такой мне неведом, увы...
Не возьмусь советовать.
Надо тебе поспрошать людей, более осведомленных в скриптовых языках.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата kop9000 ()
может получится с помощью функции это сделать например vscrips или jsrips. только я не знаю что выбрать лучше.

Возможно, а лучшим решением был бы плагин, но такой мне неведом, увы...
Не возьмусь советовать.
Надо тебе поспрошать людей, более осведомленных в скриптовых языках.

Автор - Peter
Дата добавления - 11 Октября 2016 в 01:05
kop9000Дата: Вт, 11 Октября 2016, 12:03 | Сообщение # 11
Ветеран форума
Peter ок спасибо. вот посмотри что я делаю http://oblige.sourceforge.net/forum/index.php?topic=472.0
 
СообщениеPeter ок спасибо. вот посмотри что я делаю http://oblige.sourceforge.net/forum/index.php?topic=472.0

Автор - kop9000
Дата добавления - 11 Октября 2016 в 12:03
antonДата: Чт, 13 Октября 2016, 10:23 | Сообщение # 12
Ветеран форума
Цитата kop9000 ()
Peter спасибо. я тут думаю может получится с помощью функции это сделать например vscrips или jsrip

За vbs не отвечу, а в js это фантастика, короче невозможно. В нем для хранения числа используется 64 бит из которых на сами цифры приходится только 52 бит, остальное это позиция десятичной точки. Поэтому с увеличением разрядности теряется точность, число просто не помещается в эти 52 бит и случайное число будет пои стене случайным не входящим вообще ни в какой диапазон от чего-то до чего-то. И скорее всего чтоб поместиться предстанет в виде экспонециальной записи, типа так: 574156e+12


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
 
Сообщение
Цитата kop9000 ()
Peter спасибо. я тут думаю может получится с помощью функции это сделать например vscrips или jsrip

За vbs не отвечу, а в js это фантастика, короче невозможно. В нем для хранения числа используется 64 бит из которых на сами цифры приходится только 52 бит, остальное это позиция десятичной точки. Поэтому с увеличением разрядности теряется точность, число просто не помещается в эти 52 бит и случайное число будет пои стене случайным не входящим вообще ни в какой диапазон от чего-то до чего-то. И скорее всего чтоб поместиться предстанет в виде экспонециальной записи, типа так: 574156e+12

Автор - anton
Дата добавления - 13 Октября 2016 в 10:23
mishemДата: Чт, 13 Октября 2016, 14:53 | Сообщение # 13
Эксперт форума
Для тех когда кого то вдруг заинтересует такой вопрос (хотя я в этом лично очень сомневаюсь), решить его достаточно просто.
Можно просто разбить число на несколько чисел, например вышеуказанное 9007199254740991 разбить на

90071992
54740991

из этих чисел сгенерировать нужное и объединить полученные результаты.
kop9000, объединить, а не сложить.

Или генерировать по одной цифре и в итоге так же объединить полученные результаты.

Например если число должно состоять именно из такого количества цифр и начальные нули не играют роль
Код

SetVar "[Num]" "9007199254740991"
SetVar "[Itog]" ""
StrLen "[Num]" "[Num.Kol]"
Loop "1" "[Num.Kol]" "[i]"
    Random "9" "[Result]"
    SetVar "[Itog]" "[Itog][Result]"
EndLoop


Если число должно состоять именно из такого количества цифр и первое число не должно быть нулем
Код

SetVar "[Num]" "9007199254740991"
SetVar "[Itog]" ""
StrLen "[Num]" "[Num.Kol]"
Loop "1" "[Num.Kol]" "[i]"
    Random "9" "[Result]"
    IfEx "[i]=1 and [Result]=0"
        SetVar "[Result]" "1"
    EndIf
    SetVar "[Itog]" "[Itog][Result]"
EndLoop


Если число не обязательно должно состоять именно из такого количества цифр
Код

SetVar "[Num]" "9007199254740991"
SetVar "[Itog]" ""
StrLen "[Num]" "[Num.Kol]"
Loop "1" "[Num.Kol]" "[i]"
    Random "9" "[Result]"
    IfEx "[Result]=0"
        SetVar "[Result]" "1"
    EndIf
    SetVar "[Itog]" "[Itog][Result]"
EndLoop


и т.д.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеДля тех когда кого то вдруг заинтересует такой вопрос (хотя я в этом лично очень сомневаюсь), решить его достаточно просто.
Можно просто разбить число на несколько чисел, например вышеуказанное 9007199254740991 разбить на

90071992
54740991

из этих чисел сгенерировать нужное и объединить полученные результаты.
kop9000, объединить, а не сложить.

Или генерировать по одной цифре и в итоге так же объединить полученные результаты.

Например если число должно состоять именно из такого количества цифр и начальные нули не играют роль
Код

SetVar "[Num]" "9007199254740991"
SetVar "[Itog]" ""
StrLen "[Num]" "[Num.Kol]"
Loop "1" "[Num.Kol]" "[i]"
    Random "9" "[Result]"
    SetVar "[Itog]" "[Itog][Result]"
EndLoop


Если число должно состоять именно из такого количества цифр и первое число не должно быть нулем
Код

SetVar "[Num]" "9007199254740991"
SetVar "[Itog]" ""
StrLen "[Num]" "[Num.Kol]"
Loop "1" "[Num.Kol]" "[i]"
    Random "9" "[Result]"
    IfEx "[i]=1 and [Result]=0"
        SetVar "[Result]" "1"
    EndIf
    SetVar "[Itog]" "[Itog][Result]"
EndLoop


Если число не обязательно должно состоять именно из такого количества цифр
Код

SetVar "[Num]" "9007199254740991"
SetVar "[Itog]" ""
StrLen "[Num]" "[Num.Kol]"
Loop "1" "[Num.Kol]" "[i]"
    Random "9" "[Result]"
    IfEx "[Result]=0"
        SetVar "[Result]" "1"
    EndIf
    SetVar "[Itog]" "[Itog][Result]"
EndLoop


и т.д.

Автор - mishem
Дата добавления - 13 Октября 2016 в 14:53
antonДата: Чт, 13 Октября 2016, 16:07 | Сообщение # 14
Ветеран форума
mishem, я так понял что в твоих примерах минимальное количество символов везде равно 16. Так что решил дополнить твой вариант еще примером где количество символов может быть от 1 до 16 символов. Не самый элегантный вариант, то что первое в голову пришло.

Код
SetVar "[Num]" "9007199254740991"
StrLen "[Num]" "[Num.Kol]"
SetVar "[Itog]" ""
Loop "1" "[Num.Kol]" "[i]"
     SubStr "[Num]" "[i]" "1" "[arrNum[i]]"
EndLoop
Random "[Num.Kol]" "[DlinnaResult]"
IfEx "[DlinnaResult]=[Num.Kol]"
   Loop "1" "[DlinnaResult]" "[iI]"
        Random "[arrNum[iI]]" "[Rnd]"
        If "[Rnd]" "<" "[arrNum[iI]]"
        DeleteArray "[arrNum[iI]]" "All"
        Loop "1" "[Num.Kol]" "[i]"
              SetVar "[arrNum[i]]" "9"
        EndLoop
        EndIf
        SetVar "[Itog]" "[Itog][Rnd]"
   EndLoop
Else
   Loop "1" "[DlinnaResult]" "[iI]"
   If "[iI]" "=" "1"
        Random "8" "[Rnd]"
        SetVar "[Rnd]" "[Rnd]+1"
   Else
       Random "9" "[Rnd]"
   EndIf
   SetVar "[Itog]" "[Itog][Rnd]"
   EndLoop
EndIf


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
 
Сообщениеmishem, я так понял что в твоих примерах минимальное количество символов везде равно 16. Так что решил дополнить твой вариант еще примером где количество символов может быть от 1 до 16 символов. Не самый элегантный вариант, то что первое в голову пришло.

Код
SetVar "[Num]" "9007199254740991"
StrLen "[Num]" "[Num.Kol]"
SetVar "[Itog]" ""
Loop "1" "[Num.Kol]" "[i]"
     SubStr "[Num]" "[i]" "1" "[arrNum[i]]"
EndLoop
Random "[Num.Kol]" "[DlinnaResult]"
IfEx "[DlinnaResult]=[Num.Kol]"
   Loop "1" "[DlinnaResult]" "[iI]"
        Random "[arrNum[iI]]" "[Rnd]"
        If "[Rnd]" "<" "[arrNum[iI]]"
        DeleteArray "[arrNum[iI]]" "All"
        Loop "1" "[Num.Kol]" "[i]"
              SetVar "[arrNum[i]]" "9"
        EndLoop
        EndIf
        SetVar "[Itog]" "[Itog][Rnd]"
   EndLoop
Else
   Loop "1" "[DlinnaResult]" "[iI]"
   If "[iI]" "=" "1"
        Random "8" "[Rnd]"
        SetVar "[Rnd]" "[Rnd]+1"
   Else
       Random "9" "[Rnd]"
   EndIf
   SetVar "[Itog]" "[Itog][Rnd]"
   EndLoop
EndIf

Автор - anton
Дата добавления - 13 Октября 2016 в 16:07
kop9000Дата: Чт, 13 Октября 2016, 20:30 | Сообщение # 15
Ветеран форума
Спасибо всем за примеры. мне подошёл пример от anton на что спасибо ему

Цитата mishem ()
Если число не обязательно должно состоять именно из такого количества цифр


третий примеру у тебя странный. он всё равно делает все 16 символов. проверь свой третий пример


Сообщение отредактировано
kop9000 - Чт, 13 Октября 2016, 20:33
 
СообщениеСпасибо всем за примеры. мне подошёл пример от anton на что спасибо ему

Цитата mishem ()
Если число не обязательно должно состоять именно из такого количества цифр


третий примеру у тебя странный. он всё равно делает все 16 символов. проверь свой третий пример

Автор - kop9000
Дата добавления - 13 Октября 2016 в 20:30
mishemДата: Чт, 13 Октября 2016, 21:53 | Сообщение # 16
Эксперт форума
Цитата anton ()
Не самый элегантный вариант

Вообще не элегантный. :D

Цитата anton ()
я так понял что в твоих примерах минимальное количество символов везде равно 16.

Нет, в третьем действительно ошибка, там подразумевалось что если будет 0, то его удалить.
Например первое число 0 и переменная результата еще пустая - удаляем, второе 0...-удаляем, после если переменная не пустая, зпаписываем нули.

Я примеры дал людям думать, а не kop9000. Он твой пример скопировал и сейчас опять вопросы последуют. :D

Хотя видал, ошибку нашел. Молодец! Пример под его нужды не подошел, значит ошибка. :D
Главное было пояснить как можно получать произвольные большие числа. Хотя повторюсь, вряд ли это кому нибудь понадобится.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата anton ()
Не самый элегантный вариант

Вообще не элегантный. :D

Цитата anton ()
я так понял что в твоих примерах минимальное количество символов везде равно 16.

Нет, в третьем действительно ошибка, там подразумевалось что если будет 0, то его удалить.
Например первое число 0 и переменная результата еще пустая - удаляем, второе 0...-удаляем, после если переменная не пустая, зпаписываем нули.

Я примеры дал людям думать, а не kop9000. Он твой пример скопировал и сейчас опять вопросы последуют. :D

Хотя видал, ошибку нашел. Молодец! Пример под его нужды не подошел, значит ошибка. :D
Главное было пояснить как можно получать произвольные большие числа. Хотя повторюсь, вряд ли это кому нибудь понадобится.

Автор - mishem
Дата добавления - 13 Октября 2016 в 21:53
kop9000Дата: Чт, 13 Октября 2016, 22:49 | Сообщение # 17
Ветеран форума
Цитата mishem ()
Хотя видал, ошибку нашел. Молодец! Пример под его нужды не подошел, значит ошибка. :D


так исправь ошибку. и тогда вместо благодарности anton я поблагодарю тебя за короткий пример :)
 
Сообщение
Цитата mishem ()
Хотя видал, ошибку нашел. Молодец! Пример под его нужды не подошел, значит ошибка. :D


так исправь ошибку. и тогда вместо благодарности anton я поблагодарю тебя за короткий пример :)

Автор - kop9000
Дата добавления - 13 Октября 2016 в 22:49
PeterДата: Пт, 14 Октября 2016, 02:03 | Сообщение # 18
Админ NeoBook
По правде говоря, думал, что эта тема заглохнет.
:)
Некоторое замечание...
Если говорить чисто теоретически, то у этих всех примеров есть одно "недоработанное место" - нет контроля результата на вхождение в заданный диапазон.
Ведь (ТЕОРЕТИЧЕСКИ) могут получиться и все 16 девяток....
Или в указанном примере на второй позиции окажется, скажем, 8 вместо нуля....


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеПо правде говоря, думал, что эта тема заглохнет.
:)
Некоторое замечание...
Если говорить чисто теоретически, то у этих всех примеров есть одно "недоработанное место" - нет контроля результата на вхождение в заданный диапазон.
Ведь (ТЕОРЕТИЧЕСКИ) могут получиться и все 16 девяток....
Или в указанном примере на второй позиции окажется, скажем, 8 вместо нуля....

Автор - Peter
Дата добавления - 14 Октября 2016 в 02:03
mishemДата: Пт, 14 Октября 2016, 23:45 | Сообщение # 19
Эксперт форума
Цитата Peter ()
По правде говоря, думал, что эта тема заглохнет.

Она и заглохнет. Здесь обсуждать нечего.

Цитата Peter ()
то у этих всех примеров есть одно "недоработанное место"

Там не одно, их много. Цель была показать что нужно думать не в одном направлении. :)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата Peter ()
По правде говоря, думал, что эта тема заглохнет.

Она и заглохнет. Здесь обсуждать нечего.

Цитата Peter ()
то у этих всех примеров есть одно "недоработанное место"

Там не одно, их много. Цель была показать что нужно думать не в одном направлении. :)

Автор - mishem
Дата добавления - 14 Октября 2016 в 23:45
PeterДата: Сб, 15 Октября 2016, 06:31 | Сообщение # 20
Админ NeoBook


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение

Автор - Peter
Дата добавления - 15 Октября 2016 в 06:31
mishemДата: Сб, 15 Октября 2016, 08:06 | Сообщение # 21
Эксперт форума
Цитата Peter ()
переходя дорогу с односторонним движением, в какую сторону ты смотришь?

Суслик, это такой зверь, который поднимается на задние лапки и смотрит вперед. Не летит ли орел, не бежит ли лиса, не ползет ли змея, и самые внимательные получают бампером в лоб.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата Peter ()
переходя дорогу с односторонним движением, в какую сторону ты смотришь?

Суслик, это такой зверь, который поднимается на задние лапки и смотрит вперед. Не летит ли орел, не бежит ли лиса, не ползет ли змея, и самые внимательные получают бампером в лоб.

Автор - mishem
Дата добавления - 15 Октября 2016 в 08:06
antonДата: Сб, 15 Октября 2016, 14:17 | Сообщение # 22
Ветеран форума
Цитата mishem ()
Вообще не элегантный.

Ну не мог же я сам себя откровенно закртиковать... хотя не буду спорить... по восприятию пример атас. :D :D :D :D
Особенно на третий день прочтения.... :D
Цитата Peter ()
Ведь (ТЕОРЕТИЧЕСКИ) могут получиться и все 16 девяток....

Не, я в своем примере вроде предусмотрел такую возможность, там если я не напутал, максимальное число ограничено тем которое прописано в переменной [Num] (SetVar "[Num]" "9007199254740991"). Выше него получиться случайное не должно. Именно поэтому вначале я разбиваю это число посимволно и каждый символ заношу в массив [arrNum[i]]


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
 
Сообщение
Цитата mishem ()
Вообще не элегантный.

Ну не мог же я сам себя откровенно закртиковать... хотя не буду спорить... по восприятию пример атас. :D :D :D :D
Особенно на третий день прочтения.... :D
Цитата Peter ()
Ведь (ТЕОРЕТИЧЕСКИ) могут получиться и все 16 девяток....

Не, я в своем примере вроде предусмотрел такую возможность, там если я не напутал, максимальное число ограничено тем которое прописано в переменной [Num] (SetVar "[Num]" "9007199254740991"). Выше него получиться случайное не должно. Именно поэтому вначале я разбиваю это число посимволно и каждый символ заношу в массив [arrNum[i]]

Автор - anton
Дата добавления - 15 Октября 2016 в 14:17
mishemДата: Сб, 15 Октября 2016, 17:00 | Сообщение # 23
Эксперт форума
Цитата anton ()
Не, я в своем примере вроде предусмотрел такую возможность, там если я не напутал, максимальное число ограничено тем которое прописано в переменной [Num] (SetVar "[Num]" "9007199254740991"). Выше него получиться случайное не должно. Именно поэтому вначале я разбиваю это число посимволно и каждый символ заношу в массив [arrNum[i]]

Так если первая будет 8, все остальные могут быть 9. ;) и т.д.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата anton ()
Не, я в своем примере вроде предусмотрел такую возможность, там если я не напутал, максимальное число ограничено тем которое прописано в переменной [Num] (SetVar "[Num]" "9007199254740991"). Выше него получиться случайное не должно. Именно поэтому вначале я разбиваю это число посимволно и каждый символ заношу в массив [arrNum[i]]

Так если первая будет 8, все остальные могут быть 9. ;) и т.д.

Автор - mishem
Дата добавления - 15 Октября 2016 в 17:00
PeterДата: Сб, 15 Октября 2016, 19:27 | Сообщение # 24
Админ NeoBook
Цитата mishem ()
Суслик, это такой зверь, который поднимается на задние лапки

Я вполне конкретно спросил:
Цитата 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, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата mishem ()
Суслик, это такой зверь, который поднимается на задние лапки

Я вполне конкретно спросил:
Цитата 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 - вывод

Наиболее разумно всю эту ботву оформить в виде функции.

Автор - Peter
Дата добавления - 15 Октября 2016 в 19:27
antonДата: Сб, 15 Октября 2016, 19:48 | Сообщение # 25
Ветеран форума
Цитата Peter ()
то и надо проверять, чтобы абсолютное значение (не количество циферок) было не больше заданного.

Вот кстати пример элегантного кода. Единственно, вроде как получается, что количество символов в Result всегда будет на одну меньше чем задано в InPut.

Цитата mishem ()
ак если первая будет 8, все остальные могут быть 9. и т.д

Ну да, поэтому я пересозданию массив исходных значений, если случайное число для первого символа меньше оригинала...
Код
...
...
...
If "[Rnd]" "<" "[arrNum[iI]]"
        DeleteArray "[arrNum[iI]]" "All"
        Loop "1" "[Num.Kol]" "[i]"
              SetVar "[arrNum[i]]" "9"
        EndLoop
...
...
...


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
 
Сообщение
Цитата Peter ()
то и надо проверять, чтобы абсолютное значение (не количество циферок) было не больше заданного.

Вот кстати пример элегантного кода. Единственно, вроде как получается, что количество символов в Result всегда будет на одну меньше чем задано в InPut.

Цитата mishem ()
ак если первая будет 8, все остальные могут быть 9. и т.д

Ну да, поэтому я пересозданию массив исходных значений, если случайное число для первого символа меньше оригинала...
Код
...
...
...
If "[Rnd]" "<" "[arrNum[iI]]"
        DeleteArray "[arrNum[iI]]" "All"
        Loop "1" "[Num.Kol]" "[i]"
              SetVar "[arrNum[i]]" "9"
        EndLoop
...
...
...

Автор - anton
Дата добавления - 15 Октября 2016 в 19:48
mishemДата: Сб, 15 Октября 2016, 22:21 | Сообщение # 26
Эксперт форума
WhileEx "([R] <= [InPut]) AND ([i] <= [Len])"

Зачем здесь круглые скобки?

Цитата anton ()
Единственно, вроде как получается, что количество символов в Result всегда будет на одну меньше чем задано в InPut.

Потому что строчку
SetVar "[Result]" "[R]"
нужно поставить после или перед
Math "[i]+1" "0" "[i]"

Random "[Len]" "[Len]"
Может выдать 0, и тогда не будет никакого числа.

Цитата Peter ()
Я вполне конкретно спросил

Я тебе уже отвечал по моему. Смотрю в обе стороны и по нескольку раз. Скорость движения человека во много меньше скорости движения автотранспорта. Пока дойдешь до средины, не одна машина может появиться.

То же самое и когда за рулем. Плюс еще если стойка попадает в поле зрение наклоняюсь вперед/назад чтобы быть уверенным что стойка ничего не скрывает. На определенном расстоянии и под определенным углом стойка может скрыть камаз, и даже поезд. ;)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеWhileEx "([R] <= [InPut]) AND ([i] <= [Len])"

Зачем здесь круглые скобки?

Цитата anton ()
Единственно, вроде как получается, что количество символов в Result всегда будет на одну меньше чем задано в InPut.

Потому что строчку
SetVar "[Result]" "[R]"
нужно поставить после или перед
Math "[i]+1" "0" "[i]"

Random "[Len]" "[Len]"
Может выдать 0, и тогда не будет никакого числа.

Цитата Peter ()
Я вполне конкретно спросил

Я тебе уже отвечал по моему. Смотрю в обе стороны и по нескольку раз. Скорость движения человека во много меньше скорости движения автотранспорта. Пока дойдешь до средины, не одна машина может появиться.

То же самое и когда за рулем. Плюс еще если стойка попадает в поле зрение наклоняюсь вперед/назад чтобы быть уверенным что стойка ничего не скрывает. На определенном расстоянии и под определенным углом стойка может скрыть камаз, и даже поезд. ;)

Автор - mishem
Дата добавления - 15 Октября 2016 в 22:21
PeterДата: Вс, 16 Октября 2016, 00:09 | Сообщение # 27
Админ NeoBook
Цитата mishem ()
Потому что строчку
SetVar "[Result]" "[R]"
нужно поставить после или перед
Math "[i]+1" "0" "[i]"

В обоих случаях ответ неверный.
Присваивание результата конечной переменной должно происходить только ПОСЛЕ проверки выполнения условия, т.е. СРАЗУ после строки:
Код
WhileEx "([R] <= [InPut]) AND ([i] <= [Len])"

А ошибка, влекущая за собой число циферок в результате всегда меньше 16, заключается в том, что я в проверке условия цикла нашлепал AND, а надо было OR.



Добавлено (16 Октября 2016, 00:09)
---------------------------------------------
Да, пардон, забыл...
Цитата mishem ()
Зачем здесь круглые скобки?

Так просто удобнее воспринимать текст.
Да и вообще, я крайне редко использую WhileEx, потому и косячу иногда.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата mishem ()
Потому что строчку
SetVar "[Result]" "[R]"
нужно поставить после или перед
Math "[i]+1" "0" "[i]"

В обоих случаях ответ неверный.
Присваивание результата конечной переменной должно происходить только ПОСЛЕ проверки выполнения условия, т.е. СРАЗУ после строки:
Код
WhileEx "([R] <= [InPut]) AND ([i] <= [Len])"

А ошибка, влекущая за собой число циферок в результате всегда меньше 16, заключается в том, что я в проверке условия цикла нашлепал AND, а надо было OR.



Добавлено (16 Октября 2016, 00:09)
---------------------------------------------
Да, пардон, забыл...
Цитата mishem ()
Зачем здесь круглые скобки?

Так просто удобнее воспринимать текст.
Да и вообще, я крайне редко использую WhileEx, потому и косячу иногда.

Автор - Peter
Дата добавления - 16 Октября 2016 в 00:09
mishemДата: Вс, 16 Октября 2016, 00:30 | Сообщение # 28
Эксперт форума
Цитата Peter ()
знаешь кто такой зануда?

Зануда тот, кого первый ответ не устроил.
:)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата Peter ()
знаешь кто такой зануда?

Зануда тот, кого первый ответ не устроил.
:)

Автор - mishem
Дата добавления - 16 Октября 2016 в 00:30
PeterДата: Вс, 16 Октября 2016, 01:17 | Сообщение # 29
Админ NeoBook


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение

Автор - Peter
Дата добавления - 16 Октября 2016 в 01:17
kop9000Дата: Пн, 17 Октября 2016, 01:42 | Сообщение # 30
Ветеран форума
Цитата Peter ()
Примерно так:


где вообще ты создал переменную 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)
---------------------------------------------
щас получу наезды за не внимательность. :D через 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
 
Сообщение
Цитата Peter ()
Примерно так:


где вообще ты создал переменную 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)
---------------------------------------------
щас получу наезды за не внимательность. :D через 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:42
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » рандомизация числа больше 9007199254740990 не работает
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: