31. A method for allocating a treatment to a survey respondent from a set of treatments in an online choice model survey, comprising the steps of: receiving a set of treatments for use in an online choice model survey; initializing an allocation frequency counter for each treatment in the set of treatments; receiving a request for a treatment to be provided to a survey respondent; creating a length N global binary Deck Vector D and initializing as a string of N ones indicating that all treatments are available where N is the number of treatments; creating a respondent allocation vector R of length N for each respondent for indicating whether a given treatments has been delivered to the respondent and initializing each respondent vector as string of N ones; and allocating a treatment to a survey respondent from the set of treatments; wherein the allocated treatment is selected from the subset of treatments which have not previously been allocated to the survey respondent and whose allocation frequency differs by no more than a predefined maximum difference amount from the most allocated treatment in the set of treatments; wherein allocating a treatment to a survey respondent from the set of treatments comprises: generating an availability vector A by performing a binary AND between the global binary Deck Vector D and respondent allocation vector R to obtain an availability vector A in which a one represents an available treatment; randomly selecting one of the available positions in the availability vector A; allocating the selected treatment to the respondent; and updating the global binary Deck Vector D and the respondent vector R by changing the state of the allocated position to a zero in both vectors.
31. A method for allocating a treatment to a survey respondent from a set of treatments in an online choice model survey, comprising the steps of: receiving a set of treatments for use in an online choice model survey; initializing an allocation frequency counter for each treatment in the set of treatments; receiving a request for a treatment to be provided to a survey respondent; creating a length N global binary Deck Vector D and initializing as a string of N ones indicating that all treatments are available where N is the number of treatments; creating a respondent allocation vector R of length N for each respondent for indicating whether a given treatments has been delivered to the respondent and initializing each respondent vector as string of N ones; and allocating a treatment to a survey respondent from the set of treatments; wherein the allocated treatment is selected from the subset of treatments which have not previously been allocated to the survey respondent and whose allocation frequency differs by no more than a predefined maximum difference amount from the most allocated treatment in the set of treatments; wherein allocating a treatment to a survey respondent from the set of treatments comprises: generating an availability vector A by performing a binary AND between the global binary Deck Vector D and respondent allocation vector R to obtain an availability vector A in which a one represents an available treatment; randomly selecting one of the available positions in the availability vector A; allocating the selected treatment to the respondent; and updating the global binary Deck Vector D and the respondent vector R by changing the state of the allocated position to a zero in both vectors. 32. The method as claimed in claim 31 , wherein the predefined maximum difference amount is 1.