Random number on a computer are only sort of random. They are random enough for most purposes, though, and without knowing what the original seed is and what algorithm is used (there are many) you're unlikely to be able to determine the next number... especially if you only have one or two numbers to start with.
The way it works is to start out with a seed. The seed can be anything. Most programmers use the current time in milliseconds, as this produces a seed that is hard to reproduce and well outside of the user's control. This value is then run through an equation to produce the first random number. Exactly how that equation works depends on what library is used, but it is deterministic, which means that if you give the same random number engine the same seed, it'll always produce the same 'random' number. The new random number is the basis for the next random number, which is the basis of the number after that, and so on.
So if you knew the initial seed and knew how many random numbers had been generated before, then you could produce the next value. But just knowing the last-produced value won't tell you anything. (If you had the last twenty or thirty produced values and plenty of time on your hands, you could try all the random number seeds and generate a few thousands numbers per seed looking for that pattern, but that's unlikely to be useful).
These random numbers are generally between 0 and 65535, so the programmer usually divides these numbers to produce something useful to them. For example, dividing by 6 and taking the remainder (rand() % 6) will give you a die roll. This makes it even harder to determine what the random number generator actually produced, which adds to the apparent randomness of the generator.
So to summarize the answers to your questions, it's only pseudorandom, and unless you know the seed and how many numbers have been produced so far, you're not likely to be able to determine the next value.
Hope this helps.