As your post mentions 192.168, the public IP addresses associated with machines in the network are entirely governed by the router.
It is entirely possible for different private IPs in the router to be associated with different public IPs. This is a characteristic associated with carrier grade NAT.
The problem is, however, significantly more nuanced as there are a plethora of different configurations/combinations - including handling of inbound vs outbound connections, whether multiple providers are involved, how systems are grouped.
With respect if asking what hardware/software is required - this is off-topic - there are lots of different options. While most Soho routers don't provide this functionality in the GUI, even Soho Ethernet routers that can be flashed with dd-wrt or similar can be co-opted into doing this as they run on Linux, and this is more-or-less built into the Linux IP stack, and just requires appropriate tools to manipulate it - probably at the command line. QoS bits/marks, Iptables policy based routing are all likely components of a Linux based solution.
There is no point waxing on the "how" unless the problem is more specifically fleshed out, and no way to do this until a properly specced problem is presented. It also seems likely that what you are trying is a bad idea, as you appear to be addressing issues designed to be solved using subnets while ignoring this standardized model.