:- module random. :- use_module array, builtin, int, list, private_builtin. :- type (random:supply) == int. :- pred random:params(int, int, int). :- mode random:params((builtin:out), (builtin:out), (builtin:out)) is det. :- pred random:perform_sampling(int, (array:array(T_1)), (list:list(T_1)), (list:list(T_1)), int, int). :- mode random:perform_sampling((builtin:in), (array:array_di), (builtin:in), (builtin:out), (builtin:mdi), (builtin:muo)) is det. :- mode random:perform_sampling((builtin:in), (array:array_di), (builtin:in), (builtin:out), (builtin:in), (builtin:out)) is det. :- pred random:test_2(int, (list:list(int)), int, int). :- mode random:test_2((builtin:in), (builtin:out), (builtin:mdi), (builtin:muo)) is det. :- mode random:test_2((builtin:in), (builtin:out), (builtin:in), (builtin:out)) is det. random:init(I0_3, RS_4) :- builtin:copy(I0_3, RS_4). random:randmax(M1_4, RS_5, RS_5) :- random:params(_A_6, _C_7, M_8), M1_4 = int:(M_8 - V_9), V_9 = 1. random:randcount(M_4, RS_5, RS_5) :- random:params(_A_6, _C_7, M_4). random:permutation(List0_5, List_6, RS0_7, RS_8) :- Samples_9 = array:array(List0_5), Len_10 = array:size(Samples_9), V_11 = list:[], random:perform_sampling(Len_10, Samples_9, V_11, List_6, RS0_7, RS_8). random:test(Seed_5, N_6, Nums_7, Max_8) :- random:init(Seed_5, RS_9), random:randmax(Max_8, RS_9, RS1_10), random:test_2(N_6, Nums_7, RS1_10, _RS2_11). random:params(9301, 49297, 233280). :- pragma termination_info(random:init((builtin:in), (builtin:uo)), infinite, can_loop). :- pragma termination_info(random:random((builtin:out), (builtin:mdi), (builtin:muo)), infinite, can_loop). :- pragma termination_info(random:random((builtin:out), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(random:random((builtin:in), (builtin:in), (builtin:out), (builtin:mdi), (builtin:muo)), infinite, can_loop). :- pragma termination_info(random:random((builtin:in), (builtin:in), (builtin:out), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(random:randmax((builtin:out), (builtin:mdi), (builtin:muo)), finite(0, [no, yes, no]), cannot_loop). :- pragma termination_info(random:randmax((builtin:out), (builtin:in), (builtin:out)), finite(0, [no, yes, no]), cannot_loop). :- pragma termination_info(random:randcount((builtin:out), (builtin:mdi), (builtin:muo)), finite(0, [no, yes, no]), cannot_loop). :- pragma termination_info(random:randcount((builtin:out), (builtin:in), (builtin:out)), finite(0, [no, yes, no]), cannot_loop). :- pragma termination_info(random:permutation((builtin:in), (builtin:out), (builtin:mdi), (builtin:muo)), infinite, can_loop). :- pragma termination_info(random:permutation((builtin:in), (builtin:out), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(random:test((builtin:in), (builtin:in), (builtin:out), (builtin:out)), infinite, can_loop).