相关疑难解决方法(0)

随机排列

我想尽可能快地生成随机排列.问题:作为O(n)的knuth shuffle涉及生成n个随机数.由于生成随机数非常昂贵.我想找到一个涉及固定O(1)量随机数的O(n)函数.

我意识到之前已经问过这个问题,但我没有看到任何相关的答案.

只是强调一点:我不是在寻找比O(n)更少的东西,只是一个涉及较少生成随机数的算法.

谢谢

random algorithm permutation

9
推荐指数
1
解决办法
3863
查看次数

连续生成随机枚举值而不会获得相同的值两次

我有一个enum团队,我想随机.所以我有:

public enum Teams { TEAM1, TEAM2, TEAM3, TEAM4, TEAM5, TEAM6; }
Run Code Online (Sandbox Code Playgroud)

然后我有一个随机方法来随机生成值:

public static Teams getRandomTeam() {
    return Teams.values()[(int) (Math.random() * Teams.values().length)];
}
Run Code Online (Sandbox Code Playgroud)

这确实会返回一个随机生成的团队,但是我需要,一旦团队生成,比如说TEAM2,它就不能再生成了.

我正在使用:

System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());
System.out.println("The team is " + getRandomTeam());
Run Code Online (Sandbox Code Playgroud)

(我知道这是错误的,因为它一遍又一遍地调用这个方法.

在我运行程序的那一刻,输出可能是:

团队是:TEAM2

团队是:TEAM2

团队是:TEAM4

团队是:TEAM2

团队是:TEAM3

团队是:TEAM2

但我需要我的程序只输出一次枚举值.谢谢

java random enums

3
推荐指数
2
解决办法
4713
查看次数

标签 统计

random ×2

algorithm ×1

enums ×1

java ×1

permutation ×1