code: public static RBACModel createRandomModel(Collection<String> users, Collection<String> transactions, Collection<String> roles){
  		Validate.notNull(transactions);
  		Validate.notEmpty(transactions);
  		Validate.noNullElements(transactions);
  		SOABase context = new SOABase("c1");
  		context.setSubjects(users);
  		context.setActivities(transactions);
  		
  		RoleLattice roleLattice = new RoleLattice(roles);
  		RBACModel rbac = new RBACModel("rbac1", context, roleLattice);
  
  		//Role membership and permissions
  		List<String> transactionList = new ArrayList<>();
  		transactionList.addAll(transactions);
  		Collections.shuffle(transactionList);
  		List<List<String>> rolePartitions = CollectionUtils.exponentialPartition(users, roles.size());
  		List<List<String>> activityPartitions = CollectionUtils.exponentialPartition(transactionList, roles.size());
  		List<String> roleList = new ArrayList<>();
  		roleList.addAll(rbac.getRoles());
  		for(int i=0; i<rolePartitions.size(); i++){
  			try {
  				rbac.setRoleMembership(roleList.get(i), rolePartitions.get(i));
  				rbac.setActivityPermission(roleList.get(i), new HashSet<>(activityPartitions.get(i)));
  			} catch (Exception e) {
  				throw new RuntimeException(e);
  			}
  		}
  		return rbac;
  	}
docs: Creates a new RBAC model and randomly assigns uses and permissions to roles.<br>
  The role lattice contains no relations between different roles.<br>
  Only transaction permissions are added to the RBAC model.<br>
  Each user is assigned to exactly one role.
  @param users The set of users.
  @param transactions
  @param roles The set of roles.
  @return A new RBAC model with random role assignments.
  @throws ParameterException