Ik wil een systeem maken wat groepjes genereerd voor mijn klas. Er komt namelijk vaak ter spraken dat ze te vaak met de zelfde personen in de groep zitten, en met sommige mensen nog nooit hebben samengewerkt.

Ik wil hier een oplossing voor vinden. Wellicht met PHP.

- 20+ leerlingen
- Groepsaantal is niet altijd het zelfde. Ik wil het zo maken dat je moet ingeven hoeveel personen per groep en dat hij dan vervolgens de meest unieke combinaties(groepjes) geeft.

Ik zit al een tijd te denken, maar is hier een truckje voor?

Bedankktt
Wil je iedere keer een random situatie maken, of echt een historie bij gaan houden? In het laatste geval word het vrij lastig want volgens mij moeten we dan met algoritmes gaan werken.
een historie bijhouden.. want random lost nog steeds het probleem niet op denk ik.
@Gommers

Dan moeten we daar dus echt een algoritme voor gaan bedenken. Alleen kijken wie al met elkaar in de groep hebben gezeten werkt niet. Dat is nog niet zo eenvoudig dus
Zoals ik al dacht, even experimenteren met random. Misschien is het een mogelijkheid
Op basis van 'random' groepering..

<?php

	// Bepaal leden
	$leden = array('Aasted-Madsen-van Stiphout, J.D.M.P. (CDA)', 'Aboutaleb, A. (PvdA)', 'Agema, M. (PVV)', 'Albayrak, N. (PvdA)', 'Anker, E.W. (ChristenUnie)', 'Aptroot, Ch.B. (VVD)', 'Arib, K. (PvdA)', 'Asscher, E. (VVD)', 'Atsma, J.J. (CDA)', 'Azough, N. (GroenLinks)', 'Baalen, J.C. van (VVD)', 'Balkenende, J.P. (CDA)', 'Bashir, F. (SP)', 'Beek, W.I.I. van (VVD)', 'Beeten, R.H. van de (CDA)', 'Bemelmans-Videc, M.L. (CDA)', 'Berg, G. van den (SGP)', 'Besselink, M. (PvdA)', 'Biermans, G.J.J. (VVD)', 'Bijleveld-Schouten, A.Th.B. (CDA)', 'Bijsterveld, S.Ch. van (CDA)', 'Bijsterveldt-Vliegenthart, J.M. van (CDA)', 'Bilder, E.J. (CDA)', 'Biskop, J.J.G.M. (CDA)', 'Blanksma-van den Heuvel, P.J.M.G. (CDA)', 'Blok, S.A. (VVD)', 'Blom, L. (PvdA)', 'Bochove, B.J. van (CDA)', 'Boekestijn, A.J. (VVD)', 'Boelhouwer, A.J.W. (PvdA)', 'Boer, R. de (ChristenUnie)', 'Böhler, B. (GroenLinks)', 'Bommel, H. van (SP)', 'Bos, W.J. (PvdA)', 'Bosma, M. (PVV)', 'Bouchibti, S. (PvdA)', 'Bouwmeester, L.Th. (PvdA)', 'Brinkman, H. (PVV)', 'Broeke, J.H. ten (VVD)', 'Broekers-Knol, A. (VVD)', 'Burg, B.I. van der (VVD)', 'Bussemaker, M. (PvdA)', 'Camp, W.G.J.M. van de (CDA)', 'Çörüz, C. (CDA)', 'Cramer, E.A. (ChristenUnie)', 'Cramer, J.M. (PvdA)', 'Dam, M.H.P. van (PvdA)', 'Depla, G.C.F.M. (PvdA)', 'Dezentjé Hamming, I. (VVD)', 'Dibi, T. (GroenLinks)', 'Dijck, A.P.C. van (PVV)', 'Dijk, J.J. van (CDA)', 'Dijk, J.J. van (SP)', 'Dijken, M.J. van (PvdA)', 'Dijksma, S.A.M. (PvdA)', 'Dijsselbloem, J.R.V.A. (PvdA)', 'Diks, L.I. (GroenLinks)', 'Doek, H.A. (CDA)', 'Dölle, A.H.M. (CDA)', 'Donner, J.P.H. (CDA)', 'Driel, S.J. van (PvdA)', 'Dupuis, H.M. (VVD)', 'Duthler, A.W. (VVD)', 'Eigeman, J.H. (PvdA)', 'Eijsink, A.M.C. (PvdA)', 'Elzinga, A. (SP)', 'Engels, J.W.M. (D66)', 'Essers, P.H.J. (CDA)', 'Eurlings, C.M.P.S. (CDA)', 'Ferrier, K.G. (CDA)', 'Franken, H. (CDA)', 'Fritsma, S.R. (PVV)', 'Geel, P.L.B.A. van (CDA)', 'Gent, W. van (GroenLinks)', 'Gerkens, A.M.V. (SP)', 'Gerven, H.P.J. van (SP)', 'Gesthuizen, S.M.J.G. (SP)', 'Gillard, Ch.D.M. (PvdA)', 'Goijert, A.A.E. (CDA)', 'Graaf, G.J. de (VVD)', 'Graus, D.J.G. (PVV)', 'Griffith, L.J. (VVD)', 'Haersma Buma, S. van (CDA)', 'Halsema, F. (GroenLinks)', 'Ham, B. van der (D66)', 'Hamer, M.I. (PvdA)', 'Haubrich-Gooskens, C.E.Th.M. (PvdA)', 'Haverkamp, M.C. (CDA)', 'Heemskerk, F. (PvdA)', 'Heerts, A.J.M. (PvdA)', 'Heijnen, P.M.M. (PvdA)', 'Hendrikx, J.A.M. (CDA)', 'Hermans, L.M.L.H.A. (VVD)', 'Hessels, J.W.M.M.J. (CDA)', 'Heugten, R.A.C. van (CDA)', 'Hijum, Y.J. van (CDA)', 'Hillen, J.S.J. (CDA)', 'Hirsch Ballin, E.M.H. (CDA)', 'Hoeve, H. ten (OSF)', 'Hoeven, M.J.A. van der (CDA)', 'Hofstra, P.H. (VVD)', 'Holdijk, G. (SGP)', 'Hoopen, J. ten (CDA)', 'Horn, G.H.M.M. ten (SP)', 'Horst, G. ter (PvdA)', 'Huijbregts-Schiedon, W.H. (VVD)', 'Huizinga-Heringa, J.C. (ChristenUnie)', 'Irrgang, E. (SP)', 'Jacobi, L. (PvdA)', 'Jager, H. (CDA)', 'Jager, J.C. de (CDA)', 'Janse de Jonge, E.J. (CDA)', 'Jansen, P.F.C. (SP)', 'Joldersma, F. (CDA)', 'Jonker, C.W.A. (CDA)', 'Kalma, P. (PvdA)', 'Kamp, H.G.J. (VVD)', 'Kant, A.C. (SP)', 'Kappen, F.E. van (VVD)', 'Karabulut, S. (SP)', 'Klein Breteler, J.J.A.H. (CDA)', 'Klink, A. (CDA)', 'Kneppers-Heynert, E.M. (VVD)', 'Knops, R.W. (CDA)', 'Koenders, A.G. (PvdA)', 'Koffeman, N.J. (PvdD)', 'Koopmans, G.P.J. (CDA)', 'Koppejan, A.J. (CDA)', 'Koser Kaya, F. (D66)', 'Kox, M.J.M. (SP)', 'Kraneveldt-van der Veen, M. (PvdA)', 'Krom, P. de (VVD)', 'Kuiken, A.H. (PvdA)', 'Kuiper, R. (ChristenUnie)', 'Lagerwerf-Vergunst, E.F. (ChristenUnie)', 'Langkamp, M.C. (SP)', 'Laurier, J.P. (GroenLinks)', 'Leerdam, J.A.W.J. (PvdA)', 'Leeuwen, H. van (SP)', 'Leijnse, F. (PvdA)', 'Leijten, R.M. (SP)', 'Lempens, P.P.E. (SP)', 'Leunissen, K.M.L. (CDA)', 'Linden, P.R.H.M. van der (CDA)', 'Linthorst, M.Y. (PvdA)', 'Luijben, A.P.M. (SP)', 'Madlener, B. (PVV)', 'Marijnissen, J.G.Ch.A. (SP)', 'Mastwijk, J.J. (CDA)', 'Meindertsma, M.C. (PvdA)', 'Meulenbelt, A.H. (SP)', 'Meurs, P.L. (PvdA)', 'Middelkoop, E. van (ChristenUnie)', 'Miltenburg, A. van (VVD)', 'Neppérus, H. (VVD)', 'Nerée tot Babberich, F.J.F.M. de (CDA)', 'Nicolaï, A. (VVD)', 'Noten, H.C.P. (PvdA)', 'Omtzigt, P.H. (CDA)', 'Ormel, H.J. (CDA)', 'Ortega-Martijn, C.A. (ChristenUnie)', 'Ouwehand, E. (PvdD)', 'Pater-van der Meer, M.L. de (CDA)', 'Pechtold, A. (D66)', 'Peters, P.W.J. (SP)', 'Plasterk, R.H.A. (PvdA)', 'Polderman, H.J. (SP)', 'Poppe, R.J.L. (SP)', 'Putters, K. (PvdA)', 'Quik-Schuijt, A.C. (SP)', 'Raak, A.A.G.M. van (SP)', 'Rehwinkel, J.P. (PvdA)', 'Remkes, J.W. (VVD)', 'Reuten, G.A.Th.M. (SP)', 'Roefs, C.W.J.M. (PvdA)', 'Roemer, E.G.M. (SP)', 'Rooij, N. de (SP)', 'Roon, R. de (PVV)', 'Rosenthal, U. (VVD)', 'Rouvoet, A. (ChristenUnie)', 'Rouwe, S. de (CDA)', 'Russell, P.W.L. (CDA)', 'Rutte, M. (VVD)', 'Samsom, D.M. (PvdA)', 'Sap, J.C.M. (GroenLinks)', 'Schaap, S. (VVD)', 'Schermers MA, J.P. (CDA)', 'Schinkelshoek, J. (CDA)', 'Schippers, E.I. (VVD)', 'Schouw, A.G. (D66)', 'Schreijer-Pierik, J.M.G. (CDA)', 'Schuurman, E. (ChristenUnie)', 'Slager, C. (SP)', 'Slagter-Roukema, T.M. (SP)', 'Slob, A. (ChristenUnie)', 'Smaling, E.M.A. (SP)', 'Smeets, P.E. (PvdA)', 'Smilde, M.Ch.A. (CDA)', 'Smits, M. (SP)', 'Snijder-Hazelhoff, J.F. (VVD)', 'Spekman, J.L. (PvdA)', 'Spies, J.W.E. (CDA)', 'Staaij, C.G. van der (SGP)', 'Sterk, W.R.C. (CDA)', 'Strik, M.H.A. (GroenLinks)', 'Swenker, P. (VVD)', 'Sylvester, J.J. (PvdA)', 'Tan, I.Y. (PvdA)', 'Tang, P.J.G. (PvdA)', 'Teeven MPM, F. (VVD)', 'Terpstra, G.H. (CDA)', 'Thieme, M.L. (PvdD)', 'Thissen, Ch.P. (GroenLinks)', 'Tichelaar, J. (PvdA)', 'Timmer, A.J. (PvdA)', 'Timmerman-Buck, Y.E.M.A. (CDA)', 'Timmermans, F.C.G.M. (PvdA)', 'Toorenburg, M.M. van (CDA)', 'Uitslag, A.S. (CDA)', 'Ulenbelt, P. (SP)', 'Vedder-Wubben, H.C.M. (CDA)', 'Veen, E. van der (PvdA)', 'Velzen, K. van (SP)', 'Vendrik, C.C.M. (GroenLinks)', 'Verbeet, G.A. (PvdA)', 'Verburg, G. (CDA)', 'Verdonk, M.C.F. (lid Verdonk)', 'Verhagen, M.J.M. (CDA)', 'Vermeij, R.A. (PvdA)', 'Vietsch, C.A. (CDA)', 'Vliegenthart, A. (SP)', 'Vlies, B.J. van der (SGP)', 'Vogelaar, C.P. (PvdA)', 'Voordewind, J.S. (ChristenUnie)', 'Vos, M.L. (PvdA)', 'Vries, J.G de (CDA)', 'Vries, J.M. de (CDA)', 'Vries, K.G. de (PvdA)', 'Vries-Leggedoor, G. de (CDA)', 'Vroonhoven-Kok, J.N. van (CDA)', 'Waalkens, H.E. (PvdA)', 'Weekers, F.H.H. (VVD)', 'Werner, F.J.M. (CDA)', 'Westerveld, M. (PvdA)', 'Wiegman-van Meppelen Scheppink, E.E. (ChristenUnie)', 'Wilders, G. (PVV)', 'Willems, R. (CDA)', 'Willemse-van der Ploeg, A.A.M. (CDA)', 'Wit, J.M.A.M. de (SP)', 'Wolbert, A.G. (PvdA)', 'Yildirim, D. (fractie Yildirim)', 'Zijlstra, H. (VVD)');

	// Bepaal groepen
	$groepen = array('Groep A', 'Groep B', 'Groep C', 'Groep D', 'Groep E', 'Groep F', 'Groep G', 'Groep H', 'Groep I', 'Groep J');


	echo 'We verdelen ' . sizeof($leden) . ' leden over ' . sizeof($groepen) . ' groepen.';


	// Schud leden
	shuffle($leden);

	$leden_per_groep = floor(sizeof($leden) / sizeof($groepen));
	$leden_rest = (sizeof($leden) % sizeof($groepen));

	$offset = 0;

	for($i = 0; $i < sizeof($groepen); $i++)
	{
		$aantal = $leden_per_groep;

		if($i < $leden_rest)
		{
			$aantal++;
		}

		$array = array_slice($leden, $offset, $aantal);
		$offset += $aantal;

		echo '<br><br><b>Groep: ' . $groepen[$i] . '</b> (' . sizeof($array) . ' leden)<br>' . implode('<br>', $array);
	}

?>

Reageren