... mi spieghi cosa vuoi fare in concreto?... forse facciamo prima...
1) prima di inserire un elemento in un array lo devi creare
$categorand= array();
inizialmente sarà vuoto e progressivamente a seconda di ciò che succederà nel ciclo si riempirà.
In ogni caso ciò è un NOTICE cioè un errore non molto grave. Prendi questa espressione con le molle... dato che di per sè non è grave ma le conseguenze potrebbero esserle... infatti nel tuo caso $categorand non solo non viene creato come array (vuoto) ma il ciclo while e la relativa condizione if non inseriscono nulla...
ERGO: alla funzione shuffle stai passando una variabile non esistente!! da qui l'errore a video