我正在尝试在GML中创建一个shuffling数组函数。这是我尝试过的,String result = yourString.replaceAll("[^a-zA-Z0-9]", "");
是要洗牌的数组,argument0
是这个数组的大小:
argument1
当我执行此功能时,我总是得到相同的结果:
///Shuffling array function
//argument0: the array to shuffle
//argument1: the size of the array
var i;
var j;
show_debug_message("----------");
show_debug_message("Original array: ");
show_debug_message(argument0);
show_debug_message("Size: ");
show_debug_message(argument1);
for (i = 0; i < argument1; i++)
{
j = irandom_range(i, argument1 - 1);
if (i != j)
{
k = argument0[i];
argument0[i] = argument0[j];
argument0[j] = k;
}
}
show_debug_message("Result array: ");
show_debug_message(argument0);
show_debug_message("----------");
return argument0;
答案 0 :(得分:1)
您是否在游戏中的任何位置使用了randomize()
功能? Randomize会在每次游戏运行时将种子设置为随机值 - 没有它,随机函数将始终返回相同的结果,因为它们始终使用相同的种子值。
注意:每次游戏重新运行时,[随机函数]将返回相同的值,因为GameMaker:Studio每次生成相同的初始随机种子,使调试代码变得更容易。要避免此行为,请在游戏开始时使用随机化。
randomize()
上的文档:https://docs.yoyogames.com/source/dadiospice/002_reference/maths/real%20valued%20functions/randomize.html