Генерация случайного числа в заданном диапазоне.

Обсуждение программ nnCron и nnCron LITE

Генерация случайного числа в заданном диапазоне.

Postby Aveiro » Fri, 07 Aug 2015, 16:58

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

С обычными переменными вроде получилось:

Code: Select all
#( RANDOM_DIGITE      \ TASK: Генерация случайного числа в  заданном диапазоне
NoActive
VARIABLE Low_Digite
VARIABLE High_Digite
VARIABLE Random_Digite
Action:
0 Random_Digite !
1 Low_Digite !
500 High_Digite !
WIN-INPUT-TEXT: "Вопрос" "Какая нижняя граница диапазона ?" "1" 20 0=
IF
    S>NUM
    Low_Digite !
THEN
WIN-INPUT-TEXT: "Вопрос" "Какая верхняя граница диапазона ?" "500" 20 0=
IF
    S>NUM
    High_Digite !
THEN

BEGIN                                                         \ цикл крутится до тех пор,
    Random_Digite @ Low_Digite @ <             \ пока RANDOM генерируемое число
WHILE                                                        \ не будет больше нижней границы
    High_Digite @ RANDOM                           \ заданного диапазона
    Random_Digite !   
REPEAT
MSG: "Random: %Random_Digite @%"
)#
#######################################################################################################################################################################################################


Хотелось бы использовать файловые переменные (fVAR) на случай сохранения при перезагрузке компа.
С ними не получается из-за преобразования строк в цифры, может поможите...
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Генерация случайного числа в заданном диапазоне.

Postby VoidVolker » Fri, 07 Aug 2015, 17:22

Code: Select all
1001 RANDOM \ 0-1000
1001 RANDOM 1000 + \ 1000-2000

: RANDOM-RANGE   \ ( x y -- z ) x<y, x <= z < y
    OVER -     \  x  y-x
    RANDOM +  \ z0+x
;


Code: Select all
fVAR file_var
\ преобразуем число в строку и записываем ее в файловую переменную
N>S TO file_var
\ считываем строку из файловой переменной и преобразуем ее в число
file_var S>NUM
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Генерация случайного числа в заданном диапазоне.

Postby Aveiro » Fri, 07 Aug 2015, 17:46

Спасибо большое.
А решение не покажите, давно с nnCron не работал (
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Генерация случайного числа в заданном диапазоне.

Postby VoidVolker » Fri, 07 Aug 2015, 18:03

Решение чего именно?
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Генерация случайного числа в заданном диапазоне.

Postby Aveiro » Fri, 07 Aug 2015, 18:17

Как можно использовать слово : RANDOM-RANGE ?
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Генерация случайного числа в заданном диапазоне.

Postby VoidVolker » Fri, 07 Aug 2015, 18:29

Code: Select all
50 101 RANDOM-RANGE . \ Сгенерировать случайное число от 50 до 100
-10 11 RANDOM-RANGE . \ Сгенерировать случайное число от -10 до 10
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Генерация случайного числа в заданном диапазоне.

Postby Aveiro » Fri, 07 Aug 2015, 18:47

Может конечно я не правильно чего делаю, в общем скопировал слово в начало таба с одной задачей .
nnCron ругается , "Invalid time specification и т.д"
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Генерация случайного числа в заданном диапазоне.

Postby VoidVolker » Fri, 07 Aug 2015, 19:01

Вероятно надо сделать так:
Code: Select all
<%
: RANDOM-RANGE   \ ( x y -- z ) x<y, x <= z < y
    OVER -     \  x  y-x
    RANDOM +  \ z0+x
;
%>
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Генерация случайного числа в заданном диапазоне.

Postby Aveiro » Fri, 07 Aug 2015, 19:14

Теперь не ругается.
Ладно, сложно все. Останусь со своим решением.
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Генерация случайного числа в заданном диапазоне.

Postby VoidVolker » Fri, 07 Aug 2015, 19:53

Чего именно сложного-то? Это как раз таки правильное решение. А вот то код, что выше (через цикл) - это тихий ужас и моральный террор, который генерирует лишнюю нагрузку на процессор.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Генерация случайного числа в заданном диапазоне.

Postby Aveiro » Fri, 07 Aug 2015, 19:57

Я согласен, в цикле ничего хорошего нет. И решение ваше красивое. Пару строчек кода.
Да вот только не получается у меня. Файловые переменные, постоянно в стеке мусор.
А при range слове пытаюсь подставить в переменную случ.число - снова ошибка (
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Генерация случайного числа в заданном диапазоне.

Postby VoidVolker » Fri, 07 Aug 2015, 20:54

Дык а что надо-то сделать?
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Генерация случайного числа в заданном диапазоне.

Postby Aveiro » Fri, 07 Aug 2015, 21:11

Нужно сгенерировать случайное число в диапазоне, границы которого могут меняться. Границы заданы файловыми переменными.
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Re: Генерация случайного числа в заданном диапазоне.

Postby VoidVolker » Fri, 07 Aug 2015, 21:53

Code: Select all
#( Задача_215107082015
NoActive
SingleInstance
fVAR loR
fVAR hiR
Action:
loR S>NUM  hiR S>NUM 1+  RANDOM-RANGE    \ n \ 1+ - по умолчанию переменные пустые, а результат конвертации пустой строки в число - ноль. т.о. получаем не два нуля, а 0 и 1.
." Random number is: " . CR
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Генерация случайного числа в заданном диапазоне.

Postby Aveiro » Fri, 07 Aug 2015, 22:58

Ура! Все элегантно, и самое главное работает.
--------
P.s очень хорошая программа.
Позволю спросить, возможна ли все-таки Portable версия программы ? Чтобы не устанавливать...
nncron.exe v 1.93b15 Build 1177 08.02.2016
tm.exe v 1.93b15 Build 604 08.02.2016
Aveiro
 
Posts: 222
Joined: Tue, 06 Jul 2010, 21:19

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 3 guests

cron