Browse Source

ft: 函数名修改

master
SisMaker 5 months ago
parent
commit
ab9fcf0c42
1 changed files with 54 additions and 0 deletions
  1. +54
    -0
      src/comMisc/utList.erl

+ 54
- 0
src/comMisc/utList.erl View File

@ -136,6 +136,60 @@ extract_member(1, List1, List2) ->
extract_member(Nth, [R | List1], List2) ->
extract_member(Nth - 1, List1, List2 ++ [R]).
%% ----------------------------------------------------
%% @doc
%%
%% @end
%% ----------------------------------------------------
confuse_list(List) ->
confuse_list(List, length(List), []).
confuse_list([], _Cnt, Result) -> Result;
confuse_list(List, Cnt, Result) ->
Index = rand:uniform(Cnt),
{Element, NList} = extract_member(Index, List, []),
confuse_list(NList, Cnt - 1, [Element | Result]).
extract_member(1, List1, List2) ->
case List1 of
[R] ->
{R, List2};
[R | L] ->
{R, List2 ++ L}
end;
extract_member(Nth, [R | List1], List2) ->
extract_member(Nth - 1, List1, [R | List2]).
confuse_list1(List) ->
TupleList = list_to_tuple(List),
TupleSize = tuple_size(TupleList),
confuse_list1(TupleSize, TupleSize, TupleList).
confuse_list1(0, _TupleSize, TupleList) -> tuple_to_list(TupleList);
confuse_list1(Index, TupleSize, TupleList) ->
Index1 = rand:uniform(TupleSize),
Index2 = rand:uniform(TupleSize),
Value1 = element(Index1, TupleList),
Value2 = element(Index2, TupleList),
TupleList1 = setelement(Index1, TupleList, Value2),
TupleList2 = setelement(Index2, TupleList1, Value1),
confuse_list1(Index - 1, TupleSize, TupleList2).
confuse_list2(List) ->
Array = array:from_list(List),
ArraySize = array:size(Array),
confuse_list2(ArraySize, ArraySize, Array).
confuse_list2(0, _TupleSize, TupleList) -> array:to_list(TupleList);
confuse_list2(Index, TupleSize, TupleList) ->
Index1 = rand:uniform(TupleSize),
Index2 = rand:uniform(TupleSize),
Value1 = array:get(Index1, TupleList),
Value2 = array:get(Index2, TupleList),
TupleList1 = array:set(Index1, Value2, TupleList),
TupleList2 = array:set(Index2, Value1, TupleList1),
confuse_list2(Index - 1, TupleSize, TupleList2).
%%Tuple元素数量List转成Tuple {TupleList, RemainList}
list_to_tuple(List, TupleCount) ->
list_to_tuple(List, TupleCount, []).

Loading…
Cancel
Save