-
Notifications
You must be signed in to change notification settings - Fork 0
/
randomise.php
82 lines (68 loc) · 1.68 KB
/
randomise.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
function getAllPermutations($numberOfChosenElements,$setSize){
//r = number of Chosen Elements
//n = set Size
//number of Combinations = n!/((n-r)!(r!))
//returns an array of combinations
$n = intval($setSize);
$r = intval($numberOfChosenElements);
//calculate total combinations (inc. non unique)
$totalCombinations = factorial($setSize);
//unique combinations
$uniqueCombinations = factorial($n)/(factorial($n-$r)*factorial($r));
//permutations = (number of Chosen Elements)^ set Size
$permutations = pow($n,$r);
$array = array();
//$uniqueList = array();
//echo "Total Combinations: " . $totalCombinations . "<br/>";
echo "Permutations: " . $permutations . "<br/>";
$i = 0;
for($i=0;$i<$r;$i++){
//initialize array to all 0's
$array[$i] = 0;
}
$i=0;
//start combo checking!
Permutation(0, $array, $n);
}
function Permutation($i, $array, $maxValue ){
$count = sizeof($array);
for($j = 0; $j < $maxValue; $j++){
$array[$i] = $j;
if($i< ($count-1) && $j < $maxValue){
Permutation($i+1, $array, $maxValue);
}
else{
checkCombo($array);
}
}
}
function getUniqueCombinations($numberOfChosenElements,$setSize){
getAllCombinations($numberOfChosenElements,$setSize);
}
function checkCombo($array){
//print_r($array);
$checkArray = array_count_values($array);
//if($checkArray[0] == 4 && $checkArray[1] == 4){
for($i=0;$i<count($array);$i++){
echo $array[$i];
}
echo "<br/>";
//}
}
function factorial($number){
//need an integer
$num = intval($number);
if($num == 0 || $num == 1){
return 1;
}
else{
$factorial = $num--;
while($num > 0){
$factorial = $factorial * $num--;
}
return $factorial;
}
}
getAllPermutations(2,8);
?>