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