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

Project1

 找回密码
 注册会员
搜索
楼主: szzyc0
打印 上一主题 下一主题

[已经解决] 如何让15个变量随机代入1-15这15个不同的数字

 关闭 [复制链接]

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3309
在线时间
3620 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

11
发表于 2009-7-12 16:27:53 | 只看该作者
变量随机数,事件都做的到。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

12
发表于 2009-7-12 17:14:22 | 只看该作者
殴打楼上。那个是C++的,根本通不过脚本编译
顺便寒一下亿万那个脚本
IamI 发表于 2009-7-12 16:22

为啥要寒人家……{:3_50:}
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
13
发表于 2009-7-12 18:10:52 | 只看该作者
亿万施主,老衲等着看你的脚本教程,阿弥陀佛

--------------快感炮王的防水补丁------------------------
用事件做吧
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
14
发表于 2009-7-12 19:56:32 | 只看该作者
受教!

12# 越前リョーマ
然后弱问小柯如何用事件做?
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-9-4
帖子
251
15
发表于 2009-7-12 23:12:06 | 只看该作者
a = {0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15}
for i in 1..15
b[i]=a.shift[1]
[fly][/fly]
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3309
在线时间
3620 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

16
发表于 2009-7-13 00:02:00 | 只看该作者
本帖最后由 越前リョーマ 于 2009-7-13 00:03 编辑
受教!

12# 越前リョーマ
然后弱问小柯如何用事件做?
tommay 发表于 2009-7-12 19:56

不是给15个变量分别代入1~15的数字么?
直接变量操作:随机数1~15 即可。
不过由于是15个不同,所以要操作15次。

但是呢,如果变量的批操作也允许生成的随机数代入变量组是不同的话,也可以直接批操作,那样就简单多了。

如果是我理解错误,请自行处理。
---------------------------------------------------
好吧,我理解错了。不过还是做的到,就是麻烦点。

首先拿一个变量随机数,然后下一个变量随机数,条件分歧一样的话就重新随机数。虽然这样很麻烦,但是依旧可以做到。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

17
发表于 2009-7-13 07:38:06 | 只看该作者
本帖最后由 亿万星辰 于 2009-7-13 07:39 编辑
首先拿一个变量随机数,然后下一个变量随机数,条件分歧一样的话就重新随机数。虽然这样很麻烦,但是依旧可以做到。
越前リョーマ 发表于 2009-7-13 00:02

这里要考虑一个效率问题,本来整个过程应该有15次赋值操作,但用这样的方法非但增加了一个条件判断,同时还使得赋值操作的次数变得大于等于15次,也就是如果随机数15次恰好没有取重复的话是15次,否则就会多于15次了。所以说,就要考虑只做15次操作来实现整个目的。
先将1~15存储到一个数组中,接着依次从中随机拿走一个元素放入到目标数组中,这样的操作就必然是15次完成想要完成的操作了。
当然,如果理解事件操作不包括事件里的脚本的话,那实现起来就比较困难了。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
95
在线时间
380 小时
注册时间
2006-10-16
帖子
4299

贵宾

18
发表于 2009-7-13 07:52:39 | 只看该作者
本帖最后由 玄月 于 2009-7-13 08:07 编辑

更正 - -
  1.   x = []
  2.   for i in 1...16
  3.     x[rand(i),0] = [i]
  4.   end
  5.   p x
  6.   for i in 0...15
  7.     $game_variables[i] = x[i]
  8.     p $game_variables[i]
  9.   end  
  10.   
复制代码
这次这个没错了,简单明了,已经过测试
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
19
发表于 2009-7-13 08:34:12 | 只看该作者
17# 越前リョーマ


如此说来,事件有何意义呢?
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
20
发表于 2009-7-13 11:28:00 | 只看该作者
本帖最后由 紫苏 于 2009-7-13 11:29 编辑

要论效率的话,改变动态数组的长度效率无论如何也比不上交换元素吧,所以筛法是公认效率最高的方法:顺序储存 1-15 这 15 个数,生成随机数,从还未筛选的数中取走在随机数位置的那个元素,直到倒数第二个未筛选的数也筛选完毕
  1. for i in 1..15
  2. $game_variables[i] = i
  3. end

  4. i = 14
  5. begin
  6. r = rand(i) + 1
  7. # 交换两个元素
  8. $game_variables[i + 1] ^= $game_variables[r]
  9. $game_variables[r] ^= $game_variables[i + 1]
  10. $game_variables[i + 1] ^= $game_variables[r]
  11. end until (i -= 1) < 2
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 22:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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