def METHOD_NAME(
    self,
    cores: int,
    local_ssd_data_disk: bool,
    data_disk_size_gb: int,
    preemptible: bool,
    regions: List[str],
) -> str:
    zone_weights = self.compute_zone_weights(cores, local_ssd_data_disk, data_disk_size_gb, preemptible, regions)
    zones = [zw.zone for zw in zone_weights]
    if len(zones) == 0:
        raise RegionsNotSupportedError(regions, self._regions)
    zone_prob_weights = [
        min(zw.weight, 10) * self.zone_success_rate.zone_success_rate(zw.zone) for zw in zone_weights
    ]
    log.info(f'zone_success_rate {self.zone_success_rate}')
    log.info(f'zone_prob_weights {zone_prob_weights}')
    zone = random.choices(zones, zone_prob_weights)[0]
    return zone