Algorithm 从散列到置换 用户首先填写一些文本字段,例如:姓名、电子邮件、电话 然后给他看15个项目(1,2,3,…15) 因为我们不希望数字1总是在开头,所以我们在显示顺序上添加了一些差异 稍后将重用此用户(或此会话)的显示顺序 因为4),我们可以选择 a) 将顺序随机化一次,然后缓存它,或 b) 根据此用户(或此会话)的某些信息计算订单 对于b),我想从文本字段输入生成一个散列, 然后将散列转换为显示顺序 转换不需要均匀分布,即, 这15个事件中每一个的发生概率!(=1.3e+12)置换不需要相等

Algorithm 从散列到置换 用户首先填写一些文本字段,例如:姓名、电子邮件、电话 然后给他看15个项目(1,2,3,…15) 因为我们不希望数字1总是在开头,所以我们在显示顺序上添加了一些差异 稍后将重用此用户(或此会话)的显示顺序 因为4),我们可以选择 a) 将顺序随机化一次,然后缓存它,或 b) 根据此用户(或此会话)的某些信息计算订单 对于b),我想从文本字段输入生成一个散列, 然后将散列转换为显示顺序 转换不需要均匀分布,即, 这15个事件中每一个的发生概率!(=1.3e+12)置换不需要相等,algorithm,hash,permutation,Algorithm,Hash,Permutation,M=项目数量 P(1)={1,2,3,…,M} P(2)={2,1,3,…,M} P(m)=某种置换 h=散列(姓名、电子邮件、电话)或散列(会话id),只是一些文本的散列 N(h)=范围[1,M]内的整数 那么我们想要的顺序=p(N(h)) 问题:这种转换的好方法是什么?正如@TheGreatContini所建议的,使用散列值为随机数生成器设定种子,并将其与一起使用以生成随机排列。为什么不使用输入为伪随机数生成器设定种子,然后使用随机调用的输出生成排列?计算第n个排列之前已经讨论过,例如:

M=项目数量
P(1)={1,2,3,…,M}
P(2)={2,1,3,…,M}
P(m)=某种置换

h=散列(姓名、电子邮件、电话)或散列(会话id),只是一些文本的散列
N(h)=范围[1,M]内的整数

那么我们想要的顺序=p(N(h))


问题:这种转换的好方法是什么?

正如@TheGreatContini所建议的,使用散列值为随机数生成器设定种子,并将其与一起使用以生成随机排列。

为什么不使用输入为伪随机数生成器设定种子,然后使用随机调用的输出生成排列?计算第n个排列之前已经讨论过,例如: