gpt4 book ai didi

game-maker - 我的 GMAIL 洗牌数组函数总是返回相同的结果

转载 作者:行者123 更新时间:2023-12-03 02:17:56 26 4
gpt4 key购买 nike

我正在尝试在 GML 中创建一个洗牌数组函数。这是我尝试的方法,其中 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;

当我执行这个函数时,我总是得到相同的结果:

----------
Original array:
{ { 1,2,3,4,5 }, }
Size:
5
Result array:
{ { 5,3,1,4,2 }, }
----------

最佳答案

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

NOTE: [Random functions] will return the same value every time the game is run afresh due to the fact that GameMaker: Studio generates the same initial random seed every time to make debugging code a far easier task. To avoid this behaviour use randomize at the start of your game.

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

关于game-maker - 我的 GMAIL 洗牌数组函数总是返回相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42094250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com