Project1

标题: 如何判断哪个变量最大 [打印本页]

作者: 大放异彩    时间: 2020-5-24 13:32
标题: 如何判断哪个变量最大
是的,我又来问冷门的问题来了

$game_variables[1] = 1 + rand(100)
$game_variables[2] = 1 + rand(100)
$game_variables[3] = 1 + rand(100)
$game_variables[4] = 1 + rand(100)
$game_variables[5] = 1 + rand(100)

判断出数值最大的变量ID,然后这个ID代入到变量6,这样就可以用 if elsif 来判断了... 可是...怎么判断哪个ID的数值最多

1-5号变量都是随机的
如何判断这5个变量哪个最大?



用传统的 if 来判断好像行不通

自己能力有限,研究了半天,最后变得更复杂了
我裂开了
作者: 大放异彩    时间: 2020-5-24 14:03
已经自行解决了

a =[$game_variables[1],$game_variables[2],$game_variables[3],$game_variables[4],$game_variables[5]]
for i in 1..5
if a.max == $game_variables[i]
   $最大的变量ID = i
else
end
end
p $最大的变量ID
作者: saiya酱    时间: 2020-5-24 14:07
不知道是不是我理解问题,感觉A B相减如果大于0就得A>B 互相比较大于0的就保留
或者把这些变量分别和某一个值相减,比较下来哪个值更大就是哪个

作者: J_G_Mike    时间: 2020-5-24 14:08
本帖最后由 J_G_Mike 于 2020-5-24 14:13 编辑

for i in 1..5
if $game_variables[ i ] == $game_variables.max
   $game_variables[6] = i
end

试试看,不知道对不对
作者: 芯☆淡茹水    时间: 2020-5-24 15:24
这样?
  1. return [1,2,3,4,5].sort{|a, b| $game_variables[b] - $game_variables[a]}.pop
复制代码

作者: SailCat    时间: 2020-5-24 16:02
  1. $game_variables[6] = (1..5).to_a.max{|a, b| $game_variables[a]-$game_variables[b]}
复制代码

作者: chanszeman1018    时间: 2020-5-24 16:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: ppspssss    时间: 2020-5-24 20:51
如果不用max和min sort 等數組方法的話..  想到最原始比大小 , 双重for循環, 構思是 数组内逐个数对比, 如有则加1, 包括自己, 如大于数组内所有数, 就表示最大值



  1. for i in 1..5
  2. a.push $game_variables[i]
  3. end
  4. for i in a.size
  5. 大于等于數目=0
  6. for ii in a.size
  7. if a.[i] >= a.[ii]
  8. 大于等于數目+=1
  9. end  # for ii end
  10. end # if a.[i]  end
  11. if 大于等于數目>= (a.size - 1)
  12. #找到最大數字,跳出for i循環
  13. break
  14. end

  15. end #for i end
复制代码

作者: 寒凌天    时间: 2020-5-29 16:53
这种问题在编程界是个老生常谈的话题,百度搜索“冒泡排序法”,你就明白怎么回事了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1