我的GML shuffling数组函数总是返回相同的结果

时间:2017-02-07 15:52:56

标签: gml

我正在尝试在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;

1 个答案:

答案 0 :(得分:1)

您是否在游戏中的任何位置使用了randomize()功能? Randomize会在每次游戏运行时将种子设置为随机值 - 没有它,随机函数将始终返回相同的结果,因为它们始终使用相同的种子值。

  

注意:每次游戏重新运行时,[随机函数]将返回相同的值,因为GameMaker:Studio每次生成相同的初始随机种子,使调试代码变得更容易。要避免此行为,请在游戏开始时使用随机化。

randomize()上的文档:https://docs.yoyogames.com/source/dadiospice/002_reference/maths/real%20valued%20functions/randomize.html