Random numbers are numbers that you can't predict. Flipping a coin or rolling dice will give you a random number. Random numbers are very important in games and in some kinds of Math. Computers can generate random numbers pretty well. QBASIC's RND function provides random numbers that we can use.
RND
RND is a special function that gives us a random number between 0 and 1. We can use this in games to make things interesting. RND is perfect for rolling dice or flipping a coin. First let's see RND in action:
CLS PRINT RND PRINT RND
This program will print RND twice. Notice that you'll get two numbers that appear to be unpredictable and random. But, try running the program again. You'll get the same "random" numbers. This means your games would always be the same each time the user runs them. Fortunately, there's a way to fix this.
RANDOMIZE TIMER
Using RANDOMIZE TIMER will make sure the random numbers you get are different each time you run. Try this:
CLS RANDOMIZE TIMER PRINT RND PRINT RND
Useful Random Numbers
Random numbers between 0 and 1 aren't really very useful. What you will need for a game might be a random number between 1 and 6, like when you roll dice. To get something more useful, we'll use math. Fortunately, computers are very good at math.
There are two problems we must solve to get the results we want. First, the range of random numbers has to be expanded from 0 through 1 to 1 through 6. That's easily done like this:
CLS RANDOMIZE TIMER PRINT RND * 6 + 1 PRINT RND * 6 + 1
By multiplying by 6, we increase the range to 0 through 5. By adding 1 we shift the range up to 1 through 6. However, there's still a problem. All that decimal stuff. QBASIC's INT function can be used to convert a decimal number to an integer (a number without a decimal).
CLS RANDOMIZE TIMER PRINT INT(RND * 6 + 1) PRINT INT(RND * 6 + 1)
Roll the Dice
Here's a program that rolls two dice and prints the value of each. The variables Die1 and Die2 are used to hold the values of each die before printing. In a real game, Die1 and Die2 would be used in some clever way to change the outcome of the game.
CLS RANDOMIZE TIMER INPUT "Press ENTER to roll dice...", A$ PRINT Die1 = INT(RND * 6 + 1) Die2 = INT(RND * 6 + 1) PRINT "Die 1: "; Die1 PRINT "Die 2: "; Die2
PRINT By Itself
Note that in the last program there was a PRINT on a line by itself. Did you see what it did? It simply printed a blank line on the screen. This can be useful for making the output from your program look nicer.
No comments:
Post a Comment