Development of treatments for rare diseases is challenging due to the limited number of patients available. Since a substantial proportion of all patients may be included in the trial, the goal is to treat those patients within the trial as effectively as possible. This motivates the use of response-adaptive designs which skew allocation towards the better performing treatment(s) but often reduce the statistical power. Consequently, this raises the question of how to allocate patients in order to attain a compromise between these conflicting objectives. This can be formalised as a multi-armed bandit problem with the dynamic programming and Gittins index solutions considered here. Dynamic programming is utilised to propose a randomised design for a two-arm sequential trial with binary outcomes. This design maximises the total number of patient successes and penalises if a minimum number of patients are not allocated to each treatment so that sufficient power is achieved. Moreover, the treatment effect estimator exhibits a very small bias and mean squared error. This design is shown to be fairly robust to delays, with only a slight reduction in patient benefit. Solutions to ameliorate this loss are therefore proposed, for both the fixed and random delay settings. A design based upon the Gittins index — which is randomised and orientated towards a patient benefit objective — is proposed for normal outcomes, illustrated in the multi-armed setting where patients are allocated in blocks. Patient benefit gains are observed when using this design with a continuous outcome instead of dichotomising it. These gains persist even when missing data is imputed. Throughout, we compare the proposed designs to alternative designs via extensive simulations in a range of scenarios. This thesis helps bridge the gap between theory and practice by addressing key issues that have prevented bandit models from being implemented in practice.