computer help index
 
 
Search:
"Offering free computer help, hints, and tips to the Internet populace." Now with over 3,360 tips!

Windows 2000 and DOS

Simulate a Dice Roll

SUMMARY: Simulate a dice roll with Windows 2000 and DOS. This article provides tips on the expanded 'set' command as well as how to use the %random% environment variable.

Windows 2000's DOS includes an environmental variable called %random%. This variable contains a random number from 0-32767. While this is useful in automatically generating temporary file names for file manipulation, let's do something really useful with this variable. Take this random number, perform some arithmetic, and get a command to simulate a random dice roll.

Start by setting the environment variable %dice% to be the result of this random number. The first command will create the 'dice' variable; the second merely displays the results.

C:\>set dice=%random%
C:\>echo %dice%
12663

Unless you have a VERY large dice with many, many sides, you're not likely to roll this number. So, let's manipulate it a little bit.

With the /a parameter to the SET command, we can perform arithmetic. We only want numbers 1-6. A common technique to get smaller numbers from a random larger number is to divide the larger number by the smaller number, taking the remainder. Let's illustrate by assuming we get random numbers seven through twelve to appear. Then:

7 divided by 6 = 1 with a remainder of 1.
8 divided by 6 = 1 with a remainder of 2.
...
11 divided by 6 = 1 with a remainder of 5.
12 divided by 6 = 1 with a remainder of 0 (more on this later).

So, at the DOS prompt, divide the retrieved random number by 6 and get its remainder. For this, we use the modules (%) parameter.

C:\>set /a dice=%random% % 6
5
C:\>echo %dice%
5
C:\>set /a dice=%random% % 6
1
C:\>echo %dice%
1

Do this enough, however, and you'll see a 0. This is because the random number can be equally divisible by 6, giving a 0 remainder. For example, if the random number is 12, as shown above, then 12 divided by 6 = 2, remainder 0.

A dice should not roll 0, so add one to the total to ensure the numbers come out from 1 through 6, not from 0 through 5:

C:\>set /a dice=%random% % 6 + 1
4
C:\>echo %dice%
4

You'll notice the first command always outputs the result of the arithmetic. We only want to see the dice roll result when we echo the %dice% variable ourselves, so get rid of the automatic output of the "set /a" command.

C:\>set /a dice=%random% % 6 + 1 > nul
C:\>echo %dice%
2

There! Now we have a command to simulate a dice roll and place the results in environment variable %dice%. And, you've learned a lot about batch files in the process.

If someone wants to take this and create a complete-working dice game in the Windows 2000 DOS prompt, go for it! Let me know, and I just might show your results in a future MalekTip.

 

 
Add: Del.icio.us | Digg | Furl | My Yahoo!
 

Discuss This Tip

Print This Tip

Get E-Mail When New Tips are Online

Return to the Windows 2000 and DOS page.


More in MalekTips:
Windows Vista - ExplorerGoogle Image SearchBuying a Digital Camera



Copy File or Folder Path to DOS Prompt or Windows AppSearch for Images in Various SizesPurchasing Via an Auction? High Feedback Ratings Aren't All Legitimate

RSS Feeds - Subscribe!
 

You want the latest tech tips and tricks in your e-mail Inbox - FREE? Type your e-mail address below and click 'Subscribe'.
 



( sample / details ) ( opt-out instructions )
 


 Free Offer! - Subscribe to the MalekTips computer help list and be one of the first to get new computer tips, articles, and download links! ( privacy policy )  ( opt-out instructions )
This page and its contents are copyright
©1997 - 2008 Envision Programming. ( copyright/disclaimer )

Home | Free Computer Help Newsletter! | Windows | Web Development | DOS and Batch Files | Removing Spyware
Digital Camera and Photography | Computer and Internet | Software | Microsoft Word
Computer Articles | About | Contribute a Tip | Link To Us! | Computer and Technology Links
RSS Feeds |  Contact Us | Advertising | Privacy Policy | Computer Help Forums