0
- 用户首先填写一些文本字段,例如:姓名,电子邮件,电话。
- 然后他显示了15项(1,2,3,... 15)。
- 因为我们不希望数字1始终处于开始位置,所以我们在显示顺序上添加了一些变化。
- 此用户(或本次会话)的显示顺序将稍后重复使用。
- 由于4),我们可能要么
a)随机化订单一次,然后缓存它,或b)计算从这个用户(或这个会话)的一些信息的顺序。 - 对于b),我正在考虑从文本字段输入
生成散列,然后将散列转换为显示顺序。 - 该转换不需要均匀分布,也就是
每个15的发生概率! (= 1.3e + 12)排列不需要相等。
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个置换,例如:https://stackoverflow.com/q/7918806/555045 – harold