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

Project1

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

[已经解决] 请教从1到100中随机抽取25个不重复的数,依次赋给公共变量1-25

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
跳转到指定楼层
1
发表于 2019-10-11 08:04:42 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
请教大神从1到100中随机抽取25个不重复的数,依次赋给公共变量1-25的脚本怎么写啊?

Lv4.逐梦者

梦石
0
星屑
14626
在线时间
2197 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

6
发表于 2019-10-11 15:10:15 | 只看该作者
各显神通!!!

评分

参与人数 1+1 收起 理由
taeckle + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36462
在线时间
10800 小时
注册时间
2009-3-15
帖子
4815
5
发表于 2019-10-11 14:45:57 | 只看该作者
本帖最后由 soulsaga 于 2019-10-11 15:22 编辑

感谢大神指教......
翻译一下2楼大神给的脚本
RUBY 代码复制
  1. arr = *1..100 #定义数组
  2. 25.times do |i|
  3.   $game_variables[i] = arr.delete_at(rand(arr.length)) #删除arr数组里随机一个元素並返回它..如果随机到50就会把数组里的50删除掉並返回50 如此类推 所以结果不会有重复..
  4. end

点评

这个代表转换为数组类型...  发表于 2019-10-11 19:23
请问大神第一句arr = *1..100里面为啥要有个“*”号啊?不加这个“*”可以不?  发表于 2019-10-11 19:16

评分

参与人数 1+1 收起 理由
taeckle + 1 多谢大神!

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3117
在线时间
205 小时
注册时间
2019-9-16
帖子
224
4
发表于 2019-10-11 12:14:26 | 只看该作者
本帖最后由 寒凌天 于 2019-10-11 12:15 编辑
  1. a = *1..100                   #声明1-100的数组
  2. a = a.shuffle                 #重点,数组重新随机排序

  3. for i in 1..25                #创建1-25的循环
  4. $game_variables[i] = a[i]     #把随机值装进变量
  5. end
复制代码



很简单的代码,哈哈,注释都给你写好了

点评

猫大大,1.81真有shuffle,我自己用的rpg maker xp 1.03,Ruby版本1.81,shuffle就是我在正在使用的代码,没有任何问题  发表于 2019-10-14 07:53
1.81哪来的shuffle……  发表于 2019-10-13 21:26

评分

参与人数 1+1 收起 理由
taeckle + 1 大神威武!请受小弟一拜!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14629
在线时间
2152 小时
注册时间
2016-9-20
帖子
861
3
发表于 2019-10-11 10:47:40 | 只看该作者

$a=[]   #定義$a為數組
for i in 1..100  #循環1~100次數,把1~100的值依循環次數給i值 , 比如第一次i是1,第二次i是3, 一直到100次i是100
$a.push(i)  #把i的數值加到達a數組中, 那100次循環后,$a就等于有 1~100的數值了, 比喻法:$a袋子里有1~100編号的球
end

for j in 1..25 #1~25變量, 比如你想26~50變量就填26..50
i = rand($a.size) #隨機从$a數組(袋子)抽取球數(size)的一个球
$game_variables[j] = $a #抽了之后變量就等第几个球之中的數值
$a -= [$a] #从$a數組中刪除抽中的元素,那袋子里就没有重复抽取的了
end

评分

参与人数 1+1 收起 理由
taeckle + 1 大神威武!请受小弟一拜!

查看全部评分

我发的贴子大多未经整理是草稿抱歉
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19488
在线时间
3111 小时
注册时间
2013-1-11
帖子
1292
2
发表于 2019-10-11 09:20:14 | 只看该作者
本帖最后由 张咚咚 于 2019-10-11 19:22 编辑
  1. arr = *1..100
  2. 25.times do |i|
  3.   $game_variables[i+1] = arr.delete_at(rand(arr.length))
  4. end
复制代码

点评

对,应该索引1开始,已修改。不加*的话是Range范围对象不行的。  发表于 2019-10-11 19:24
请问大神第一句arr = *1..100里面为啥要有个“*”号啊?不加这个“*”可以不?  发表于 2019-10-11 19:15
好像有一个问题,公共变量是从1开始的吧。底下应该用i+1  发表于 2019-10-11 18:37

评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 认可答案
taeckle + 1 大神威武!请受小弟一拜!

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 09:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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