Abstract. Logic Programs with Annotated Disjunctions (LPADs) provide a simple and elegant framework for integrating probabilistic reasoning and logic programming. In this paper we propose an algorithm for learning LPADs. The learning problem we consider consists in starting from a sets of interpretations annotated with their probability and finding one (or more) LPAD that assign to each interpretation the associated probability. The learning algorithm first finds all the disjunctive clauses that are true in all interpretations, then it assigns to each disjunct in the head a probability and finally decides how to combine the clauses to form an LPAD by solving a constraint satisfaction problem. We show that the learning algorithm is correct and complete.