首页 > 解决方案 > 生成具有 n 位的随机数并避免使用 0 作为第一位?

问题描述

如何编写一个函数,该函数接受一个数字n并返回一个随机生成的具有精确n数字的数字(以 0 开头除外)。例如,如果n为 2,则函数可以随机返回 10-99 范围内的数字,但 07,02 等不是有效的两位数。

标签: pythonpython-3.x

解决方案


这是一个函数,它获取输入的位数ndigits,并返回一个带有数字的随机数ndigits。我使用 10 的幂来获得带数字的ndigits数字范围。

import random

...

def random_ndigits(ndigits):
    min_num = 10 ** (ndigits - 1)
    max_num = (10 ** ndigits) - 1

    if ndigits == 1:
        min_num = 0

    return random.randint(min_num, max_num)

推荐阅读