level 6
各位大神,请问怎么做到随机?
随机取数【choose(val1,val2)】不太好用
2014年11月30日 04点11分
1
level 9
random(x)
返回从0至x间的随机数(含0不含x)。若想得到整数,最好配合floor与ceil使用
2014年11月30日 07点11分
4
irandom(x)不就是随机取整么?
2014年11月30日 10点11分
回复 水晶史莱姆 :对的……一时间忘了此函数
2014年11月30日 11点11分
level 11
var a;
a=random(mum)
if(a=0){...;a=-1}
if{a=1}{...;a=-1}
if(a=2){...;a=-1}
.
.
.
2014年11月30日 11点11分
5
var a; a=round(random(mum)) 前面应该这样子
2014年11月30日 11点11分
level 13
先介绍一下这么几个随机类函数:
choose(val0,val1,val2,....,val15),这个函数是从你16个参数(0~15)中任选一个,属于穷举随机。(小技巧:名面上说是16个参数,而实际上,choose里面是可以套choose的,用这个技巧可使用的空间就大幅度提升了)
下面是随机数函数:
random(x)与irandom(x)是从0随机出一个数,这个数不会大于给定数字,后面只能给出整数,参数不能取负,若取负,则前者无法正常工作;
random_range(val1,val2)和iradom_range(val1,val2)是范围随机,所给定的val1和val2是随机取得的范围,必须保证val1>val2,否则这个参数亦不能正常工作。但是,这个函数可以把范围放到负区间内,但仍然要前大于后
下面这个是随机原理了,因为计算机的随机数并非真正意义上的凭空随机(计算机很受原则的,他才不会凭空
捏
造一些东西的,除非你唆使他),而是依靠随机数种子,而随机数种子在GMS版本中显得尤为重要。所谓随机种子,可以粗略的理解为一套随机方案,或者是一列随机结果数,而上述函数都是返回这个数值的。
randomize(),这个不会生成数字,他仅仅是把当前的随机种子打乱而已,GM8倒是无所谓,因为为了迎合初学者,游戏会自动在开头进行打乱。但是在GMS中,这是进行随意随机之前必备的一步,否则,上次随机的结果为:1,4,5,8,2,1,2,4,……这次就还是1,4,5,8,2,1,2,4,……
random_get_seed(),这个返回当前使用的随机种子的索引号,这个函数不经常使用。
random_set_seed(seed),设定随机种子,如果初学者制作游戏,这个函数也是不经常使用的,但实际上,这个方法也是随处可见的,拿我们最熟悉的空当接龙,每一局的编号就是一个随机种子,或者举一个更贴近生活的例子,Minecraft里这点体现的尤为明显。
2014年11月30日 13点11分
6
说反了,val1<val2,后者大于前者
2014年11月30日 14点11分
吧务
level 13
上面都说差不多了啊……那咱补充一句
random(x)理论上在0到x的范围里“均匀的”生成随机数,而sqrt(random(x*x))则可以生成“更倾向于生成靠近x一侧的数,靠近0的数较少”的随机数。
咱之前大概研究过几次(之后没悬念的弃坑了)。如果需要类似资料的话,我想办法转过来。
2014年12月04日 08点12分
7