coolair
V2EX  ›  问与答

Python 从指定范围内的整数中获取 N 个不同的数,有什么好的办法吗?

  •  
  •   coolair · Apr 9, 2019 · 2548 views
    This topic created in 2616 days ago, the information mentioned may be changed or developed.

    比如:从 1-100 中随机获取 5 个不同的数。

    def test(start, end, length):
        result = []
        while len(result) < length:
            number = randint(start, end)
            if number not in result:
                result.append(number)
        return result
    

    我是这么写的,但是感觉不是很简洁,有更好的办法吗?

    5 replies    2019-04-09 16:32:52 +08:00
    yzongyue
        1
    yzongyue  
       Apr 9, 2019
    so 搜 random n number python
    huahuajun9527
        2
    huahuajun9527  
       Apr 9, 2019   ❤️ 1
    ```python
    import random

    random.sample(range(1, 101), k=5)
    ```

    https://docs.python.org/3/library/random.html#random.sample
    ipwx
        3
    ipwx  
       Apr 9, 2019
    使用 random shuffle 算法,但不做完,只做前 k 项。取前 k 项即可。

    https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
    fngtz
        5
    fngtz  
       Apr 9, 2019 via iPhone
    我觉得很简洁。比 random.sample 简洁多了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1390 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 16:56 · PVG 00:56 · LAX 09:56 · JFK 12:56
    ♥ Do have faith in what you're doing.