查看: 13085|回复: 31

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

[复制链接]
梦石
0
星屑
1809
在线时间
199 小时
注册时间
2018-1-20
回帖
72
发表于 2020-7-18 20:53:27 | 显示全部楼层 |阅读模式

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

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

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

QQ图片20200718204812.png
纯代码小白,知道最好的解决办法是用数组但是不会写,这里尝试着用事件脚本实现,但是喜闻乐见地报错了↓
QQ图片20200718204819.png
请问有大佬知道如何解决吗?

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

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

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

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

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

不知道有没有大佬愿意再次解答这个问题,但是真的非常感谢之前回答的老师们,这里又从中学习到了很多!
即使最终没有解决本人的问题,但是发生在本帖的讨论一定能帮到其他有着与标题有相同问题的人w
梦石
0
星屑
25352
在线时间
1136 小时
注册时间
2019-3-5
回帖
1303
发表于 2020-7-18 21:37:46 | 显示全部楼层
纯代码小白,没看懂楼主写的什么意思。脚本还能这么写吗……

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

使用道具 举报

梦石
1
星屑
15825
在线时间
5415 小时
注册时间
2017-2-18
回帖
413
发表于 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

使用道具 举报

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

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

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

使用道具 举报

梦石
0
星屑
1809
在线时间
199 小时
注册时间
2018-1-20
回帖
72
 楼主| 发表于 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
回复

使用道具 举报

梦石
0
星屑
1809
在线时间
199 小时
注册时间
2018-1-20
回帖
72
 楼主| 发表于 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
回复

使用道具 举报

梦石
0
星屑
1809
在线时间
199 小时
注册时间
2018-1-20
回帖
72
 楼主| 发表于 2020-7-18 22:49:36 | 显示全部楼层
阵颜 发表于 2020-7-18 21:43
变量1 = 随机 1..6
循环{
  变量2 = 随机 1..6

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

点评

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

使用道具 举报

梦石
0
星屑
1998
在线时间
137 小时
注册时间
2020-5-7
回帖
34
发表于 2020-7-18 23:13:58 | 显示全部楼层
报错的地方是两行“如果”,判断相等是 ==,你写的 = 是赋值

点评

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

使用道具 举报

老黄鸡

梦石
4
星屑
45694
在线时间
7948 小时
注册时间
2009-7-6
回帖
13337

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2020-7-18 23:52:16 | 显示全部楼层
[pre lang="javascript"]// 生成多少个数字
var n = 6;
// 起始变量编号
var startVarId = 10;
// 填充arr为1-n的数字
arr = [];
for(var i=0;i<n;i++) {arr.push(i+1)};
// 打乱
arr.sort(function(){ return 0.5 - Math.random();})
// 赋值给变量
for(var i=0;i<n;i++) {
        $gameVariables.setValue(startVarId+i,arr);
};[/pre]

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

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

评分

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

查看全部评分

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

使用道具 举报

梦石
0
星屑
4584
在线时间
369 小时
注册时间
2020-1-29
回帖
211
发表于 2020-7-19 09:23:07 | 显示全部楼层
设置N个重复性检查变量
随机
随机出的数和重复性检查变量比对
不相等
随机数赋值给重复性变量
回复 1 0

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部