查看: 4275|回复: 20

[已经解决] 在一个不规则数组里随机抽3个不重复的数赋给公共变量1,2,3

[复制链接]
梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
发表于 2020-1-19 21:22:21 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 taeckle 于 2020-1-19 21:24 编辑

我遇到了一个数组,想从这个数组里抽取3个不重复的数后依次放到公共变量1,2,3里,咱是这么想的:

arr = [45,854,98,23,45,78,111,9,74,25]             #这就是咱遇到的数组,第一步建立数组,咱会!
3.times do |i|                                                  #这步叫建立循环
  $game_variables[i+0] = arr.delete_at(rand(arr.length))  # 就这里不懂,请问下这里是i+0还是i+1啊??为什么啊?
end

还请大神指点一二,多谢了!

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2020-1-19 22:17:23 | 显示全部楼层
[pre lang="ruby"]arr = [45,854,98,23,45,78,111,9,74,25]             #这就是咱遇到的数组,第一步建立数组,咱会!
3.times do |i|                                                  #这步叫建立循环
  $game_variables[i+1] = arr.delete_at(rand(arr.length))  # 就这里不懂,请问下这里是i+0还是i+1啊??为什么啊?
end[/pre]

I+1才对..这里I从0幵始所以要+1
你觉得+0有意义么..

点评

这和+0有什么关系..  发表于 2020-1-20 00:13
感觉ruby里有好多是要从0开始计算,比如 case rand(5) 不就是从0开始的吗。。  发表于 2020-1-20 00:03
0+0还是0啊..意义何在..  发表于 2020-1-19 23:47
为什么要有0?有什么关系..  发表于 2020-1-19 23:06
$game_variables从1开始的..  发表于 2020-1-19 23:05

评分

参与人数 1赞 +1 收起 理由
taeckle + 1 有$game_variables[0]这玩意嘛?

查看全部评分

回复

使用道具 举报

梦石
0
星屑
4881
在线时间
425 小时
注册时间
2019-10-22
回帖
647
发表于 2020-1-20 02:48:27 | 显示全部楼层
关于$game_variables[0]的解答

对变量有疑问的
用print 或者puts 在控制台康康不就知道了?

点评

请问下这控制台怎么用啊..  发表于 2020-1-20 23:24
















回复

使用道具 举报

梦石
0
星屑
5615
在线时间
2571 小时
注册时间
2011-9-27
回帖
1059

极短23参与开拓者

发表于 2020-1-20 09:24:50 | 显示全部楼层
所有计算机语言里面,数组编号从0开始。
但是,RM编辑器中的变量集合经过了封装,默认从1开始。 所以尽量不要使用0号。

顺便说一句,数组中抽出三个不重复数字的话,有内置的 sample()方法。
  1. l=[1,3,4,5,8,9]
  2. p l.sample(3)  #随机取出其中三个数字打印出来,保证互不相同。
复制代码

评分

参与人数 4星屑 +50 赞 +3 收起 理由
RyanBern + 50 认可答案
taeckle + 1 受教了!
KB.Driver + 1 毕竟MATLAB
SixRC + 1 所有前需要几乎吧 毕竟lua.

查看全部评分

从平淡走向更平淡。
回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2020-1-20 11:31:43 | 显示全部楼层
怕鼠的猫 发表于 2020-1-20 09:24
所有计算机语言里面,数组编号从0开始。
但是,RM编辑器中的变量集合经过了封装,默认从1开始。 所以尽量不 ...

大神那请问下这个3.times do |i|到底是1.2.3还是0,1,2的意思啊?

有啥好法子一眼就看出来啊?
回复

使用道具 举报

梦石
0
星屑
179
在线时间
17 小时
注册时间
2019-6-21
回帖
2
发表于 2020-1-20 14:22:35 | 显示全部楼层
taeckle 发表于 2020-1-20 11:31
大神那请问下这个3.times do |i|到底是1.2.3还是0,1,2的意思啊?

有啥好法子一眼就看出来啊? ...

3.times do |i|
  p i
end
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2020-1-20 14:52:27 | 显示全部楼层
本帖最后由 soulsaga 于 2020-1-20 14:57 编辑
taeckle 发表于 2020-1-20 11:31
大神那请问下这个3.times do |i|到底是1.2.3还是0,1,2的意思啊?

有啥好法子一眼就看出来啊? ...


a=*1..3
a.each do |i|
  p i
end

这样搞还不如用FOR..

点评

我更喜欢写成(1..3).each{|i| }  发表于 2020-1-22 23:47
回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2020-1-20 23:22:19 | 显示全部楼层
jyuen 发表于 2020-1-20 14:22
3.times do |i|
  p i
end

请问下怎么用这个字母"p"测试啊?

点评

运行游戏到这段就会弹出窗口显示I的值...  发表于 2020-1-21 00:18
回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2020-1-20 23:23:10 | 显示全部楼层
soulsaga 发表于 2020-1-20 14:52
a=*1..3
a.each do |i|
  p i

那这个3.times do |i|到底是1.2.3的循环还是0,1,2的循环啊?

点评

OK!  发表于 2020-1-22 02:26
012  发表于 2020-1-21 00:17
回复

使用道具 举报

梦石
0
星屑
179
在线时间
17 小时
注册时间
2019-6-21
回帖
2
发表于 2020-1-22 14:24:51 | 显示全部楼层
taeckle 发表于 2020-1-20 23:22
请问下怎么用这个字母"p"测试啊?

p 本来是ruby内部的用来打印值的一种较特殊的方法,经常在测试的时候用,后来在RGSS里重写过了,效果是弹出一个消息框显示值。具体用法的话就
p 对象
就好了,相当于print嘛

评分

参与人数 1赞 +1 收起 理由
taeckle + 1 我很赞同

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部