C* 3.0 added a new algorithm that optimised the token allocation (CASSANDRA-7032) [1] with allocate_tokens_for_keyspace in cassandra.yaml (originally allocate_tokens_keyspace but renamed) [2].
Apart from that, there's no real change to how num_tokens work. What really changed is the philosophy on 256 being a bad default operationally. The new proposed default is 16 (CASSANDRA-13701). [3] [1] https://issues.apache.org/jira/browse/CASSANDRA-7032 [2] https://github.com/apache/cassandra/commit/36d0f55d46ac0edb5a4f140c7993c6d207605fe7 [3] https://issues.apache.org/jira/browse/CASSANDRA-13701