我需要编写一个函数,该函数生成唯一的随机数列表,其中的数字不应与列表的索引相同。
Valid output - 1 3 2 0
Invalid output - 0 3 2 1 /- Number 0 and index 0 are same
Invalid output - 1 0 2 3 /- Number 2 and 3 matches with index
我可以考虑使用Deal函数(?),但列表中的数字与索引匹配
-5?5
我可以对种子做些什么,使其生成与数字索引不同的数字吗?
其他任何没有滚动/交易功能(?)的解决方案也将有很大帮助。
编辑: 我提出了以下解决方案-(欢迎使用其他/优化方法)
{$[max(til x)=o:{neg[x]?x}x;.z.s[x];o]}
答案 0 :(得分:3)
可能有几种方法可以做到这一点。我想到了这个:
q){$[any (r:neg[x]?x)=til x;.z.s x;r]}5
3 2 4 0 1
q){$[any (r:neg[x]?x)=til x;.z.s x;r]}5
2 0 4 1 3
生成随机列表,然后如果任何索引匹配,它将生成另一个列表,直到没有索引匹配为止。