设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2856|回复: 16
打印 上一主题 下一主题

[已经解决] 如何判断哪个变量最大

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2841
在线时间
640 小时
注册时间
2012-2-13
帖子
178
跳转到指定楼层
1
发表于 2020-5-24 13:32:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
是的,我又来问冷门的问题来了

$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 来判断好像行不通

自己能力有限,研究了半天,最后变得更复杂了
我裂开了

Lv3.寻梦者

梦石
0
星屑
2841
在线时间
640 小时
注册时间
2012-2-13
帖子
178
2
 楼主| 发表于 2020-5-24 14:03:52 | 只看该作者
已经自行解决了

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

点评

p [$game_variables[1],$game_variables[2],$game_variables[3],$game_variables[4],$game_variables[5]].max 就可以了  发表于 2020-5-24 14:47
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3448
在线时间
285 小时
注册时间
2013-10-13
帖子
262

开拓者

3
发表于 2020-5-24 14:07:19 | 只看该作者
不知道是不是我理解问题,感觉A B相减如果大于0就得A>B 互相比较大于0的就保留
或者把这些变量分别和某一个值相减,比较下来哪个值更大就是哪个

点评

谢谢,不过我已经自行解决啦  发表于 2020-5-24 14:17
一次放纵自己违反规则以后,就会养成习惯,一旦变成习惯了想改也改不了了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
150
在线时间
18 小时
注册时间
2020-5-19
帖子
11
4
发表于 2020-5-24 14:08:31 | 只看该作者
本帖最后由 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

试试看,不知道对不对

点评

$game_variables.max不一定会出现在1-5号变量中  发表于 2020-5-24 23:36
谢谢,不过我已经自行解决啦  发表于 2020-5-24 14:16
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31887
在线时间
5080 小时
注册时间
2012-11-19
帖子
4877

开拓者

5
发表于 2020-5-24 15:24:33 | 只看该作者
这样?
  1. return [1,2,3,4,5].sort{|a, b| $game_variables[b] - $game_variables[a]}.pop
复制代码
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22431
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

6
发表于 2020-5-24 16:02:54 | 只看该作者
  1. $game_variables[6] = (1..5).to_a.max{|a, b| $game_variables[a]-$game_variables[b]}
复制代码
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv4.逐梦者 (禁止发言)

梦石
0
星屑
5701
在线时间
922 小时
注册时间
2013-8-29
帖子
1468
7
发表于 2020-5-24 16:16:47 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14043
在线时间
2069 小时
注册时间
2016-9-20
帖子
844
8
发表于 2020-5-24 20:51:11 | 只看该作者
如果不用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
复制代码

点评

只要有一次a[i]<a[ii]就可以跳出循环,不必要接着判断……  发表于 2020-5-30 18:11
内容仅供参考,
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3082
在线时间
205 小时
注册时间
2019-9-16
帖子
224
9
发表于 2020-5-29 16:53:11 | 只看该作者
这种问题在编程界是个老生常谈的话题,百度搜索“冒泡排序法”,你就明白怎么回事了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-20 16:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表