ゲームドロップアルゴリズム

1256 ワード

これがアルゴリズムかどうか分からないが、本人はアルゴリズムに精通していない(プログラマーの中のキックアス、お母さんの卵)
目標:自分でerlangでゲームサーバーのフレームワークを書いて、興味のある学生がいるかどうか、私信を歓迎します.
実装言語:erlang
落下ルール配表
drop(DropId)->
	Proto = sys_drop_ets:get_proto(DropId),
	%% ItemsPro = [{100001,10}, {100002,10}, {100001,20}]
	ItemsPro = sys_drop_ets:get_items_pro(Proto),
	TotalPro = 
		lists:foldl(fun(ItemPro, Acc)->
				{_, Pro} = ItemPro,
				Pro + Acc
			end, 0, ItemsPro),
	random:seed(now()),
	Random = random:uniform(TotalPro),
	{Items, TPro} = 
		lists:foldl(fun({Item, Pro}, {TItem, TPro})->
			if
				TPro >= Random->
					{TItem, TPro};
				Pro + TPro >= Random->
					{Item, Pro + TPro};
				true->
					{[], Pro + TPro}
			end
		end, {[], 0}, ItemsPro),
	Items.


1つのリストから、指定された数のリストが表示されます.
random_player_id_list1(PlayerIdList)->     Len = length(PlayerIdList),     random:seed(now()),     Random = random:uniform(Len),     {L1, L2} = lists:split(Random, PlayerIdList),     Len2 = length(L2),     if         L2 > ?ONE_PAGE_PLAYER_NUM->             lists:sublist(L2, ?ONE_PAGE_PLAYER_NUM);         Len2 =:= ?ONE_PAGE_PLAYER_NUM->             L2;         true->             Len2++ lists:sublist(L1, ?ONE_PAGE_PLAYER_NUM - L2)     end.