03-22-2009, 01:00 PM
Spread range over variables
by GubiD
Mar 22 2009
Aedelstan put forth the request
[quoteAedelstan on Mar 22 2009]Does anyone know how to make a method like this:
var_spread(v1, v2, min, max)
then $game_variables[v1..v2] are each set to a random variable between min and max
This is easy, but I want to have so that each value occurs only once
So if you write
var_spread(1, 3, 4, 6)
Variable #1 would be set to 4 , 5 or 6 (let's say 6)
Variable #2 would be set to 4 or 5 (let's say 4, 6 is already used by var 1)
Variable #3 would be set to 5 (4 and 6 are already used)[/quote]
Here, this should work.
by GubiD
Mar 22 2009
This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given.
No support is given.
Aedelstan put forth the request
[quoteAedelstan on Mar 22 2009]Does anyone know how to make a method like this:
var_spread(v1, v2, min, max)
then $game_variables[v1..v2] are each set to a random variable between min and max
This is easy, but I want to have so that each value occurs only once
So if you write
var_spread(1, 3, 4, 6)
Variable #1 would be set to 4 , 5 or 6 (let's say 6)
Variable #2 would be set to 4 or 5 (let's say 4, 6 is already used by var 1)
Variable #3 would be set to 5 (4 and 6 are already used)[/quote]
Here, this should work.
Code:
class Interpreter
def randomize_vars(start, end, min, max)
e = end-start
if e < 0
e = start-end
rev_var = true
end
v = max-min
if v < 0
v = min-max
rev_rand = true
end
#Start assignment
used = []
strt = rev_var ? end : start
base = rev_rand ? max : min
for i in 0...e
val = rand(v)
if !used.include?(val)
$game_variables[strt+i] = base+val
end
end
end
end