...
'@\[\+rand\(([0-9]+)-([0-9]+)\)\+\]@si' => rand(intval("$1"), intval("$2")),
...
echo preg_replace_callback(
'@\[\+rand\(([0-9]+)-([0-9]+)\)\+\]@si' ,
function($m){return rand(intval($m[1]), intval($m[2]));},
'test [+rand(4-10)+] test');