【发布时间】:2016-02-10 14:38:01
【问题描述】:
我正在尝试这样做:
$var = 0 #This stay inside a JSON Object
newVar = []
n.times do |i|
newVar.push(randomize($var))
end
def randomize(thisVar)
thisVar = Random.new.rand(0 .. 100)
return thisVar
end
但我总是在数组 newVar[] 内的所有变量上得到相同的值
我已尝试使用 .dup 和 .clone 来不为所有字段赋予相同的值。但它不起作用。
真实代码:
# IdeenAG: Operacoes Geneticas
def novaPopulacao ()
puts "\n\nIdeenAG: Criando Populacao ("+$parametros['populacaoInicial']+")\n"
tempVar = []
populacaoCriada = []
xtimes = $parametros['populacaoInicial'].to_i
xtimes.times do |i|
populacaoCriada.push(mutar($variaveis.clone))
end
puts populacaoCriada.to_s+"\n"
return populacaoCriada
end
def mutar (varArray)
varArray.each_with_index do |variavel,index|
puts "IdeenAG: Mutando População ("+variavel['nome']+")\n"
variavel['valor'] = Random.new.rand(variavel['minimo'].to_i .. variavel['maximo'].to_i)
end
return varArray
end
真实结果(带 3 个变量)
[[
{"nome"=>"var0", "minimo"=>"1", "maximo"=>"99999", "valor"=>70356},
{"nome"=>"var1", "minimo"=>"1", "maximo"=>"99999", "valor"=>55356},
{"nome"=>"var2", "minimo"=>"1", "maximo"=>"99999", "valor"=>65904}
],
[
{"nome"=>"var0", "minimo"=>"1", "maximo"=>"99999", "valor"=>70356},
{"nome"=>"var1", "minimo"=>"1", "maximo"=>"99999", "valor"=>55356},
{"nome"=>"var2", "minimo"=>"1", "maximo"=>"99999", "valor"=>65904}
],
[
{"nome"=>"var0", "minimo"=>"1", "maximo"=>"99999", "valor"=>70356},
{"nome"=>"var1", "minimo"=>"1", "maximo"=>"99999", "valor"=>55356},
{"nome"=>"var2", "minimo"=>"1", "maximo"=>"99999", "valor"=>65904}
],
[
{"nome"=>"var0", "minimo"=>"1", "maximo"=>"99999", "valor"=>70356},
{"nome"=>"var1", "minimo"=>"1", "maximo"=>"99999", "valor"=>55356},
{"nome"=>"var2", "minimo"=>"1", "maximo"=>"99999", "valor"=>65904}
],
[
{"nome"=>"var0", "minimo"=>"1", "maximo"=>"99999", "valor"=>70356},
{"nome"=>"var1", "minimo"=>"1", "maximo"=>"99999", "valor"=>55356},
{"nome"=>"var2", "minimo"=>"1", "maximo"=>"99999", "valor"=>65904}
]]
查看字段“valor”,它始终是相同的值!我需要随机化它。
【问题讨论】:
-
听起来英语可能不是你的第一语言。我们还有西班牙语堆栈溢出:es.stackoverflow.com 和葡萄牙语:pt.stackoverflow.com
-
这个简单的例子似乎按预期工作。为什么你删除了原始的内联代码?我们更喜欢内联代码而不是屏幕截图。
-
$variaveis 到底是什么?我认为这个全局变量是问题的关键。
-
请不要发布代码链接或使用图片。在搜索或测试您的代码时,我们无法重复使用图像,并且链接会腐烂然后断开,从而导致问题的信息丢失。相反,插入演示问题所需的最少代码,以及必要的输入数据和预期的输出数据。请阅读“How to Ask”。在Ruby中,我们使用snake_case,所以使用
this_var和new_var而不是thisVar和newVar。 -
@theTinMan 蛇盒真的是红宝石约定吗?我见过骆驼箱和蛇箱都用过,不明白为什么会有所作为。