【发布时间】:2021-06-19 14:30:57
【问题描述】:
问题
假设您有一个结构化的np.array:
first_array = np.array([1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9])
并且您想创建一个新的np.array,大小相同,但被打乱了。
例如
second_array = np.random.shuffle(first_array)
second_array
# np.array([3, 2, 9, 5, 6, 1, 1, 6, 9, 7, 8, 5, 2, 7, 8, 3, 4, 4])
到目前为止,一切都很好。但是,随机洗牌会导致一些重复项彼此非常接近,这是我试图避免的。
问题
如何打乱这个数组,使整数顺序是伪随机的,但每个重复项很有可能彼此相距很远?这个问题有更具体的术语吗?
【问题讨论】:
-
我记得这是随机播放音乐播放列表时的常见问题;用户抱怨“洗牌不够好”,因为经常会有来自同一艺术家的两个连续标题。因此,Spotify 和几乎所有的播放列表软件现在都在使用非均匀随机的“平滑”随机播放算法,并避免相邻的相似标题。
-
是的,我还记得 Spotify 有这个问题。很好的提示,谢谢。
标签: python numpy random shuffle