从哈希到排列

时间:2017-08-31 20:03:53

标签: algorithm hash permutation

  1. 用户首先填写一些文本字段,例如:姓名,电子邮件,电话。
  2. 然后他出现了15项(1,2,3,...... 15)。
  3. 因为我们不希望数字1总是在开头,所以我们在显示顺序上添加了一些差异。
  4. 此用户(或此会话)的显示顺序将在以后重复使用。
  5. 因为4),我们可以左右 a)将订单随机化一次,然后缓存它,或者 b)从该用户(或该会话)的某些信息计算订单。
  6. 对于b),我想从文本字段输入生成哈希,
    然后将哈希转换为显示顺序。
  7. 转换不需要均匀分布,即, 每个15的发生概率! (= 1.3e + 12)排列不必相等。
  8.   

    M =项目数

      P(1)= {1,2,3,...,M}
      P(2)= {2,1,3,...,M}
      P(m)=一些排列

         

    h =哈希(名称,电子邮件,电话)或哈希(会话ID),只是来自某些文本的哈希
      N(h)= [1,M]

    范围内的整数      

    然后我们想要的顺序= P(N(h))

    问题:此次转化的好方法是什么?

1 个答案:

答案 0 :(得分:1)

正如@TheGreatContini建议的那样,使用哈希值为随机数生成器播种,并将其与Fisher–Yates shuffle一起使用以生成随机排列。