gpt4 book ai didi

algorithm - 在每个索引处生成具有唯一值的多个数字序列

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:48:18 24 4
gpt4 key购买 nike

我有一行数字 1:n。我想添加第二行也有数字 1:n 但这些应该是随机顺序,同时满足以下条件:

  1. 没有职位在两行中具有相同的编号
  2. 没有数字组合出现两次

例如,在下面

Row 1:  1  2  3  4  5  6  7 ...
Row 2: 3 6 15 8 13 12 7 ...

数字 7 出现在第 1 行和第 2 行的相同位置(即位置 7;因此不满足规则 1)

在下面

Row 1:  1  2  3  4  5  6  7 ...
Row 2: 3 7 15 8 13 12 2 ...

2+7 的组合出现了两次(在位置 2 和 7;因此不满足规则 2)。

手动执行此操作也许是可能的,但会不必要地耗费时间(至少在达到合理数量之前),但在 MATLAB 中必须有一个非常优雅的解决方案。

最佳答案

这个问题称为排列的错乱
使用函数 randperm,以找到数据的随机排列。

x = [1  2  3  4  5  6  7];
y = randperm(x);

然后,您可以检查序列是否合法。如果没有,请一次又一次地做..
你有一个 probability每次大约 0.3 次才能成功,这意味着您需要大约 10/3 次才能找到它。因此,您会很快找到答案。

或者,您可以使用 this algorithm创造一个随机的困惑。

编辑

如果您只想拥有大小 > 2 的循环,这是问题的概括。里面写着概率 在 that case较小,但足够大,可以在固定的步数中找到它。所以同样的方法仍然有效。

关于algorithm - 在每个索引处生成具有唯一值的多个数字序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8836564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com