ranmachine.java
来自「java实现的遗传算法RPS」· Java 代码 · 共 67 行
JAVA
67 行
package net.leonmax.rpsGame.gaEngine;
import java.util.Random;
public class RanMachine {
private double[] group;
private boolean[] candidate;
private int left;
public void setGroup(double[] g) {
group = g;
}
public int[] roulette(int num) {
int[] ret = new int[num];
Random ran = new Random();
for (int i = 0; i < num; i++) {
double ranNum = ran.nextDouble();
//System.out.println(ranNum);
double temp = 0;
for (int j = 0; j < group.length; j++) {
if (ranNum > temp && ranNum <= group[j] + temp) {
ret[i] = j;
break;
}
temp += group[j];
}
}
return ret;
}
public int ranRPS() {
setGroup(new double[] { 1.0 / 3.0, 1.0 / 3.0, 1.0 / 3.0 });
return roulette(1)[0];
}
// exclude one of the RPS move, and randomized from the rest two
public int ranRPS(int exc)
{
resetCandidate(3);
candidate[exc] = true;
return elect();
}
public void resetCandidate(int num)
{
candidate = new boolean[num];
left = num;
}
public int elect()
{
Random r = new Random();
int chosenOne = r.nextInt(left);
int count = 0; // none chosen ones visit count
int k = -1; // visit count
do
{
if (!candidate[++k]) count++;
} while (count < chosenOne + 1 && k < candidate.length - 1);
candidate[k] = true;
left--;
return k;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?