我想在我的 android 音乐播放器应用程序中添加一个随机播放选项。为此,我在 java 中调用一个随机函数来返回一个介于 0 和当前播放歌曲列表大小之间的数字。问题是该函数返回与以前相同的值,并且在该值中发生重复。堆栈溢出本身有很多解决方案可以避免这个问题。该解决方案以及以下解决方案不适用于我的情况。1. 创建一个混洗数组包含 0 到最大列表大小值。它将失败,因为歌曲列表的大小是动态的。2. 洗牌歌曲列表数组本身。由于时间复杂性,它将失败。
我需要的是一个数学哈希函数,它将执行以下操作..
如果 50 是最大范围,则输入数字 1 将映射到任何其他数字,比如 34。输入 2 到任何其他数字,比如 21。输入 3 到任何其他数字,比如 10 等等。所有映射的数字都应该在 50 范围内并且不允许重复。(映射时没有联盟)也不允许映射到该数字。请注意,如果最大范围相同(在本例中为 50)并且此函数的输入数字 2 应在整个应用程序的任何时间返回值 21。
函数时间复杂度应该更低。