|  |      1leavebody      2023-11-09 16:30:11 +08:00 直接这样? random.seed(num) | 
|      2makun123      2023-11-09 16:31:56 +08:00 自己定义一套根据 一个 int 值打乱的规则 就行吧 比如 输入 3 定义每遇到下标 len(array)%3 的倍数 和 array 首位 互换位置。嫌不够乱就多循环几次 每次 int 值 -1 | 
|  |      3murmur      2023-11-09 16:33:15 +08:00 看不懂你的题,但是这个不就是 shuffle 么,随便找一个实现看源码就可以了,但是看你需求还是给了种子之后 shuffle 结果唯一? | 
|  |      4icandoallthings OP @makun123 对 有没有根据一个数打乱得比较乱的规则。 | 
|  |      5geelaw      2023-11-09 16:34:28 +08:00 via iPhone 首先你的描述很难读懂,不要用常见的模板/泛型参数的记号表达 type 的类型。 其次,这个题目是平凡的,如果不规定何种乱序才叫乱序,可以直接输出 array 本身。 最后,发挥数年浸淫在高考中的“解读出题人意图”的超能力,这个问题的意思大概是说 type 当作 Z/(n!) 的元素和长度为 n 的 array 的所有排列来个双射,你需要搜索的关键词是 reservoir sampling——假设 type 非负,每次令 type % i 为采样得到的随机数并把 type 替换为 floor(type / i) 并继续。搜索之后还不会再问。 | 
|  |      6zjsxwc      2023-11-09 16:36:52 +08:00 A(10,10) = 10! = 3628800 个全排序 你把 type<Int 类型>值对应到 3628800 以内的整数数字,里某个排序不就 ok 了 |