######## ######### ######## Randomizes Order of Treatments and exports them to a csv file ######### ####################################################################################################### import random import pandas as pd from itertools import combinations import itertools #number_of_results = int(input("How many iterations?")) number_of_results = 4 print(number_of_results) treatment_list = [1,2,3,4] def t_randomizer(n): combinations = [] k = 0 for i in itertools.permutations(range(1, n + 1)): if isinstance(i, (list, tuple)) and all(i[j] != i[j+1] - 1 for j in range(len(i)-1)): if k == 0 or i[0] != combinations[-1][0]: if all(i[j][:k] != combinations[-1][j][:k] for j in range(k)): combinations.append(i) k = min(k+1, n) return combinations # def t_randomizer (lst, n): # output_list = [] # for i in range(n): # one_iteration = random.sample(lst, len(lst)) # if i == 0: # output_list.append(one_iteration) # #output_list = [element for sublist in output_list for element in sublist] # print(output_list) # else: # indicator = 0 # while indicator == 0: # one_iteration = random.sample(lst, len(lst)) # for iteration in range(n): # for t in range(len(output_list)-1): # print(f"op list t {output_list[t,iteration]} \nop list t+1 {output_list[t+1]} ") # if t <=len(lst)-2: # back_to_back_iter = [one_iteration[t], one_iteration[t+1]] # back_to_back_op = [output_list[t], output_list[t+1]] # else: # back_to_back_iter = one_iteration[t] # back_to_back_op = output_list[t] # if one_iteration[t] == output_list[t] or back_to_back_iter == back_to_back_op: # indicator = 0 # output_list.append(one_iteration) # print(f"succesful iter: {one_iteration} \n\n") # print(f"total list: {output_list} \n\n") # indicator = 1 # return output_list randomized_treatment_orders = t_randomizer(4) print(randomized_treatment_orders) output_table = pd.DataFrame(randomized_treatment_orders, columns=['first','second','third','fourth']) output_table.to_csv('random_treatment_iterations.csv',mode='w+')