Rand returning Int

BlitzMax Forums/BlitzMax Programming/Rand returning Int

*(Posted 2006) [#1]
I was using SuperStrict and have a long variable that I want a random number for if I use Rand I get an error IntToLong error or summat like that, is there way to make it return a long number.

Does max do casting?


tonyg(Posted 2006) [#2]
long(rand(n,n+1))?


Brendane(Posted 2006) [#3]
You get an error with what code?

I can do this :-

Global i:Long = Rand(0,100)

with no problems.

Explicit casting is performed by this kind of syntax (brackets are unneccessary but I always use them)

Global x:Int
Global y:Float

y = 10.0
x = Int(y) ' Here's the cast to Int


FlameDuck(Posted 2006) [#4]
Not quite what you asked for, but it fakes it well enough:
SuperStrict

SeedRnd(MilliSecs())

Local random:Long = Rand(0,$7fffffff)
random :Shl 32
random :| Rand(0,$7fffffff)
Print random
Print LongHex (random)
I'm sure you could elaborate on it to cover the last two missing bits if you really need them bad enough.


Koriolis(Posted 2006) [#5]
Then simply use -$8000000 as the minimum value rather than 0. You'll get *all* your bits randomly filled.


*(Posted 2006) [#6]
I had a Long in a type and the compiler was throwing an error on the Rand, when I remarked the line out it compiled fine it also ran perfectly when I changed it to Rnd too. This is why I asked. I will try the method's you describe thanks :)