【发布时间】:2019-12-31 00:37:19
【问题描述】:
问题:
我正在尝试生成多个不同长度的随机数列表。在长度为num_baskets 的for 循环中,我使用np.random.choice 为每个连续列表n 的长度生成一个数字。然后,np.random.choice 再次生成长度为n 的随机数列表。
预期输出:
长度列表num_baskets,列表中的每一项都是随机长度n的另一个列表。
电流输出:
长度列表num_baskets,但具有统一的子列表长度。但是,每次我运行该函数时,每次调用的子列表长度都是不同的(但仍然是统一的)。
我尝试过的:
当我从 python 文件导入函数时,(例如from python_file import create_baskets 与预期输出有偏差。尽管在每个循环中重新定义了n,但所有输出列表的长度都相同。
但是,当我复制并粘贴该函数并在 jupyter 笔记本中定义它时,我得到了具有不同列表长度的预期输出。
我的代码:
import numpy as np
def create_baskets(num_baskets, max_basket_size, unique_items):
"""
Create list of baskets of variable length >= 3
Parameters
----------
num_baskets:
number of baskets (sub-lists)
max_basket_size: maximum basket size
Baskets will be of size range(3, max_basket_size)
unique_items:
number of unique items
Returns
-------
ret: list of "baskets", of randomly generated length
"""
baskets = []
for i in range(num_baskets):
n = np.random.choice(range(3, max_basket_size), 1)
basket = np.random.choice(range(0, unique_items), n, replace=False)
baskets.append(basket)
return baskets
我不确定函数的编写方式是否存在根本错误/可改进之处,或者是否存在导入问题。
【问题讨论】: