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

Project1

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

[有事请教] 如何实现随机抽到的数字不重复(7月31日追加问题)

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1809
在线时间
199 小时
注册时间
2018-1-20
帖子
80
跳转到指定楼层
1
发表于 2020-7-18 20:53:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 北意大利 于 2020-7-31 21:34 编辑


纯代码小白,知道最好的解决办法是用数组但是不会写,这里尝试着用事件脚本实现,但是喜闻乐见地报错了↓

请问有大佬知道如何解决吗?

————↓7月31日添加内容↓————

非常感谢各位大佬之前的解答!

但是实话实说这里问题并没有解决,是我标题的表述问题,这个怪我自己orz(←语文超级差)

这里正在制作的是一个学习游戏,图片这一段是想实现两个步骤:
①抽取题目:把类型+难度+题号随机  
②判断重复:形成编码,判断100-120号内有无储存相同的变量 有回到① 无则将该编码踢进100-120号中第一个值为0的变量
实现的机能是:抽取特定类型难度的题库里面的一道题,并且与之前所有抽过的题不重复

这里和一起制作的同伴讨论了一下,我们无法按照大佬们的解答解决这个问题的原因大概是:
·我们抽取的数字是有特殊的指定范围的,是三段有范围的随机数组合成一个整体形成的一串编码,而不是直接从整数范围内抽取的一列不重复的数字。

不知道有没有大佬愿意再次解答这个问题,但是真的非常感谢之前回答的老师们,这里又从中学习到了很多!
即使最终没有解决本人的问题,但是发生在本帖的讨论一定能帮到其他有着与标题有相同问题的人w

Lv4.逐梦者

梦石
0
星屑
18820
在线时间
1031 小时
注册时间
2019-3-5
帖子
1418
2
发表于 2020-7-18 21:37:46 | 只看该作者
纯代码小白,没看懂楼主写的什么意思。脚本还能这么写吗……

其实不嫌麻烦直接上变量就是了,通过数个变量挨个记录随机出来的数字,相同就继续随机,直到所有结果不曾重复。
回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
13234
在线时间
5037 小时
注册时间
2017-2-18
帖子
371
3
发表于 2020-7-18 21:43:10 | 只看该作者
变量1 = 随机 1..6
循环{
  变量2 = 随机 1..6
   if 变量2 != 变量 1
        跳出循环
   end
  等待1帧
}
循环{
  变量3 = 随机 1..6
   if 变量3 != 变量 1
       if 变量3 != 变量 2
          跳出循环
      end
   end
  等待1帧
}
化而为鸟,其名为鸽。怒而咕,咕咕咕咕——咕咕咕!
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1809
在线时间
199 小时
注册时间
2018-1-20
帖子
80
4
 楼主| 发表于 2020-7-18 22:34:00 | 只看该作者
Zeldashu 发表于 2020-7-18 21:37
纯代码小白,没看懂楼主写的什么意思。脚本还能这么写吗……

其实不嫌麻烦直接上变量就是了,通过数个变量 ...

主要是这里要判断的个数目前是二十个,量有点大……)
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1809
在线时间
199 小时
注册时间
2018-1-20
帖子
80
5
 楼主| 发表于 2020-7-18 22:47:09 | 只看该作者
阵颜 发表于 2020-7-18 21:43
变量1 = 随机 1..6
循环{
  变量2 = 随机 1..6

非常感谢您!!但是这里要判断的数目是二十个,实际操作过程中是二十个触发顺序不定的事件判断是否与之前抽到过的数字重复,并不是直接随机出一组不重复的数,1L是因为为了测试有没有bug才写在一起(

点评

抱歉 我回复的时候卡了 显示我没发出去 所以发了三遍()  发表于 2020-7-31 20:58
你也没必要发3遍吧..  发表于 2020-7-23 14:29
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1809
在线时间
199 小时
注册时间
2018-1-20
帖子
80
6
 楼主| 发表于 2020-7-18 22:48:39 | 只看该作者
阵颜 发表于 2020-7-18 21:43
变量1 = 随机 1..6
循环{
  变量2 = 随机 1..6

非常感谢您!!但是这里要判断的数目是二十个,实际操作过程中是二十个触发顺序不定的事件判断是否与之前抽到过的数字重复,并不是直接随机出一组不重复的数,1L是因为为了测试有没有bug才写在一起(

点评

你也没必要发3遍吧..  发表于 2020-7-23 14:30
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1809
在线时间
199 小时
注册时间
2018-1-20
帖子
80
7
 楼主| 发表于 2020-7-18 22:49:36 | 只看该作者
阵颜 发表于 2020-7-18 21:43
变量1 = 随机 1..6
循环{
  变量2 = 随机 1..6

非常感谢您!!但是这里要判断的数目是二十个,实际操作过程中是二十个触发顺序不定的事件判断是否与之前抽到过的数字重复,并不是直接随机出一组不重复的数,一楼那一张是为了测试有没有bug才写在一起(

点评

你也没必要发3遍吧..  发表于 2020-7-23 14:30
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1828
在线时间
137 小时
注册时间
2020-5-7
帖子
38
8
发表于 2020-7-18 23:13:58 | 只看该作者
报错的地方是两行“如果”,判断相等是 ==,你写的 = 是赋值

点评

谢谢!受教了><  发表于 2020-7-31 21:01
回复 支持 1 反对 0

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39877
在线时间
7494 小时
注册时间
2009-7-6
帖子
13485

开拓者贵宾

9
发表于 2020-7-18 23:52:16 | 只看该作者
JAVASCRIPT 代码复制
  1. // 生成多少个数字
  2. var n = 6;
  3. // 起始变量编号
  4. var startVarId = 10;
  5. // 填充arr为1-n的数字
  6. arr = [];
  7. for(var i=0;i<n;i++) {arr.push(i+1)};
  8. // 打乱
  9. arr.sort(function(){ return 0.5 - Math.random();})
  10. // 赋值给变量
  11. for(var i=0;i<n;i++) {
  12.         $gameVariables.setValue(startVarId+i,arr[i]);
  13. };


执行以上脚本,根据需求修改n和startVarId的值
以上面的6和10为例,执行结果会变为10-15号变量变成1-6的不重复随机数

不过楼主这个报错来看,是把==写成了=

评分

参与人数 3+3 收起 理由
北意大利 + 1 精品文章
红烧狮子头 + 1 精品文章
moonyoulove + 1 精品文章

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 2 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4124
在线时间
348 小时
注册时间
2020-1-29
帖子
193
10
发表于 2020-7-19 09:23:07 | 只看该作者
设置N个重复性检查变量
随机
随机出的数和重复性检查变量比对
不相等
随机数赋值给重复性变量
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-14 06:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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