gpt4 book ai didi

java - 生成随机顺序但在java中有约束

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:42 33 4
gpt4 key购买 nike

当我放置一个整数列表时,如何生成另一个随机顺序但有约束?

例如,我将整数 1、2、3、4 放入集合中,当我尝试打印结果时,如 "1 2 3 4","1 2 4 3","1 3 2 4","2 1 3 4", or "2 1 4 3"(1必须在3之前,2必须在4之前)

提前致谢

最佳答案

您可以考虑的一件事是随机交换元素。您可以在集合中选择一个随机位置,然后将该位置的元素与下一个元素交换。这样,您可以防止将 1 与 3 交换,或将 2 与 4 交换。您可以重复执行此操作,直到数字被正确打乱:

[1, 2, 3, 4]随机数为0,与位置1的元素交换。

[2, 1, 3, 4]随机数为1,与位置2的元素交换

元素是 1 和 3,所以不要交换。

[2, 1, 3, 4] 随机数为2,与位置3的元素交换

[2, 1, 4, 3]

如果您想概括约束条件,只需更改条件即可。当元素为 1 和 3,或 2 和 4(如上例所示)时,您可以确保要交换位置的两个元素不在彼此的 2 以内,而不是拒绝交换,所以像if(b==a+2)continue;:

元素是 5 和 7,所以不要交换。

if(7==5+2)continue; // ie don't swap.

关于java - 生成随机顺序但在java中有约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12253759/

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