$roomnop sounds like "room number"... as in, an integer... is it? Although User Manager allows that, I think that part might be error prone. You may want to prefix the username with something, so that it doesn't start with a number... say "room-".
Also, I'm pretty sure create-and-activate-profile requires a profile. If a user "doesn't have a profile" (as in "they aren't limited in any way"), create a profile that doesn't have any limitations, and use that. Alternatively, don't call create-and-activate-profile at all.
For the "random" part... I suggest you try the client from my signature. I'm not aware of it having any randomly occurring problems - it should always fail to create-and-activate-profile when the profile is not there, or if that's allowed - always succeed... Unless it's a RouterOS issue, which in this case I doubt.
Rewriting your code with it in mind:
<?php
use PEAR2\Net\RouterOS;
require_once 'PEAR2_Net_RouterOS-1.0.0b5.phar';
//Define $roomnop, $password and $profilep here
try {
$client = new RouterOS\Client('192.168.88.1', 'admin', 'password');
$removeRequest = new RouterOS\Request('/tool/user-manager/user/remove');
$removeRequest->setArgument('numbers', $roomnop)
$DelUser = $client->sendSync($removeRequest);
$addRequest = new RouterOS\Request('/tool/user-manager/user/add');
$addRequest
->setArgument('customer', 'admin')
->setArgument('username', $roomnop)
->setArgument('password', $password);
$newUser = $client->sendSync($addRequest);
$activateRequest = new RouterOS\Request('/tool/user-manager/user/create-and-activate-profile');
$activateRequest
->setArgument('customer', 'admin')
->setArgument('username', $roomnop)
->setArgument('profile', $profilep);
$add_user_profile = $client->sendSync($activateRequest);
} catch (Exception $e) {
}