import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class ThreeSpeak {
public static void main(String[] args) {
List<Integer> plist = new ArrayList<Integer>();
Random r = new Random();
for (int i = 0; i < 50; i++) {
int p = r.nextInt(3);
while (plist.size() > 0 && p == plist.get(plist.size() - 1)) {
p = r.nextInt(3);
}
plist.add(p);
System.out.println(p + "说话!");
}
}
}

解决方案 »

  1.   


    int persons[] = {1,2,3};//请将1,2,3相应地代到a,b,c
    Random r = new Random();
    for (int i = 0; i < 50; i++) {
    int current = r.nextInt(2);
    System.out.println("第[" + persons[current] + "]人说...");
    persons[current]  = persons[current] ^ persons[2];
    persons[2]  = persons[current] ^ persons[2];
    persons[current]  = persons[current] ^ persons[2];
    }思路是,只让前面两位随机说,谁说话了谁和最后一位交换位子。
      

  2.   

          /**
     * a,b,c三个人随机说一句话但是一个人不能重复说
     */
    public void randomSay(){ 
    Random r = new Random();
    int font = -1;
    for(int i=1; i<3; i++){
    int cur = r.nextInt(3);
    if(font != cur){
    System.out.println(cur);
    font = cur;
    }
    }
    }