CMD %random% Variable Controller
by NotePro in Circuits > Software
358 Views, 3 Favorites, 0 Comments
CMD %random% Variable Controller
I have made a %random% variable controller that always outputs a number 1-5. This was made because I was trying to make a game that required an element of randomness in it and so I made up these two programs to help me.
Supplies
For this project, you will need Notepad (AKA the best app ever), and preferably some basic knowledge of the coding language. (As this program might not be useful if you don't know how to use it.)
There are no steps. Only need to Copy and Paste the work into Notepad and name the file anything_you_want.bat
Warning!! If someone asks you to put code you don't understand on a computer, DONT! Fun fact, You don't need to let CMD have administrator permissions for it to harm your computer. I have lost my cursor in the Wireless USB connector for my mouse from making my computer restart too many times in the same second.
Copy and Paste
This is the Beta program and has slow speeds since the %random% variable can produce a large number and the loop, while quite fast, only takes 5 away each time. Copy the code between the **** To skip to the latest version of the code, go to the next step.
*****************************************************************************************
@echo off
title random function controller
:top
cls
echo this version allows you to get a number 1-5 ALWAYS!! :)
pause
set r=%random%
:loop
set /a r= %r% -5
if %r% LSS 6 goto num
goto loop
:num
echo the number is %r%
pause
:StartAgain
cls
echo again??
pause
set r=%random%
goto loop
****************************************************************************************
Version 2.0
This is the faster improved version. Just copy and paste it into Notepad!
copy in between the ***********
*********************************************************************************
@echo off
title random function controller
:top
cls
echo this version allows you to quickly get a number 1-5 :)
pause
set r=%random%
:loop
rem // the subtraction part is -995 instead of -1000 because %r%-5 comes after it. It would be possible to get a negative number.
rem // I have the code "if %r% LSS 6 goto num" twice in the loop because %random% spits out a number between 0-32767. If the number that %random% retrieves is 5 or less, you could end up with a negative number.
if %r% LSS 6 goto num
if %r% GTR 1000 set /a r=%r% -995
set /a r= %r% -5
if %r% LSS 6 goto num
goto loop
rem // instead of everything below, you would have your if statements.
:num
echo the number is %r%
pause
:StartAgain
cls
echo again??
pause
set r=%random%
goto loop
****************************************************************************************
Thank you for reading!
It would be great if you could explain some of your ideas for this program in the comments.
Final Thoughts
The %random% command is a special command. It outputs a number 0 through 32767
I have recently figured out that the most efficient way to do what I have shown in my instructable is to do
set /a var = %random% * (%highest-Value% - %lowest-Value%) / 32768 + %lowest-value%
Just set the variables to the numbers that you would prefer!