0

好的,所以在我的课堂上正在研究纸牌游戏 War,但我必须使用处理,并且我需要创建一个非重复随机数生成器才能使其工作。我知道在常规 IDE 中我可以使用Collection.shuffle,但处理过程中没有人知道如何制作随机非重复数字

void mousePressed() { 
    imageMode(CENTER);
    isDraw = true;
    isDraw2 = true;
    if(isDraw){
    int n = int(random(card.length)); 
    /// I should make this an array but Collection.shuffle 
    /// doesn't work
    for (int i = 0; i < 14; i++) {
       if (n == i) {
           Card[i] = false; 
           println(n+1+" human "+Card[i]);
       }

       if (Card[n]) {
           image(card[n], width/2, height/2-120);
       }
   }
4

2 回答 2

3

导入 java.util.Random

import java.util.Random;

这段代码会得到 0 到 100 之间的随机数。

Random random = new Random();
random.nextInt(100); //Get random between 0 and 100.

建议您在方法外部创建一个 Random,如果您需要多次调用该方法,该方法将使用它。

如果您不想生成重复值,请在列表中初始化它们。

List<Integer> values = new ArrayList<Integer>();
//fill with 0 to 10 elements.

然后调用方法获取随机

Integer rand = random.nextInt(values.size());
Integer cardId = values.get(rand);
values.remove(rand);

上面的代码片段将从列表中获取一个预初始化的值并将其删除,因此它不会再次“生成”。

于 2013-11-07T16:46:34.300 回答
0

在处理中,您不需要导入随机。

您有一个随机方法可用:

random(10);

这将为您提供一个介于 0.0 和 9.9 之间的随机数。

random(2, 4);

这将为您提供 2.0 和 3.9 之间的随机数。

于 2013-11-08T16:26:23.680 回答