gpt4 book ai didi

java - 两个随机数发生器(发牌)

转载 作者:行者123 更新时间:2023-12-02 00:30:12 26 4
gpt4 key购买 nike

我需要有关这部分代码的帮助。这部分涉及生成 2 个随机数,并使用该随机数同时在 2 个标签框中的每一个中显示一张卡片。这里的问题是随机数没有正确生成,因此卡片没有​​正确显示(有重复,有时不显示等)

我的代码的基础知识:让我们假设 h(来自代码另一部分的变量)是 1 到 53 之间的任何数字(每个数字都与一张卡相关)。如果生成的随机数(不重复)与变量 h 匹配,则计时器停止。

所以它基本上就像拥有一副纸牌并将纸牌均匀地发给 2 个人,但是一旦与随机抽取的纸牌(数字)相关的数字匹配,发牌就会停止。

(l3,l4是标签名称)全局变量:

    Random rng = new Random();
List<Integer> generated = new ArrayList<Integer>();
List<Integer> generated2 = new ArrayList<Integer>();
int l3count;
int l4count;
int Ulim = 53;
int Llim = 1;
int next;
int check;
int h;
int next2;
int Ulim2 = 53;
int Llim2 = 1;



final int p = h;
int delay2 = 1000;
final Timer timer2 = new Timer();
timer2.schedule(new TimerTask(){
public void run(){

for (int i = 1; i < 53; i++)
{
while(true)
{
next = rng.nextInt(Ulim) + Llim;
if (!(generated.contains(next)||generated.contains(next2)))
{

generated.add(next);
break;
}

next2 = rng.nextInt(Ulim2) + Llim2;
if (!(generated.contains(next)||generated.contains(next2)))
{

generated.add(next2);
break;
}


}

String a = Integer.toString(next);
String c = "C:\\Users\\mycompname\\Desktop\\deck\\"+a+".png";

String d = Integer.toString(next2);
String e = "C:\\Users\\mycompname\\Desktop\\deck\\"+d+".png";

for(int j = 1;j<=53;j++)
{
if(j%2==0)
{l3.setIcon(new ImageIcon(c));
}
else
{l4.setIcon(new ImageIcon(e));
}
}


if(next==p||next2==p)
check=10;
break;
}
if(check==10)
timer2.cancel();
timer2.purge();
}

},delay2, 1000);

如有任何帮助,我们将不胜感激。感谢您抽出时间。

最佳答案

你最好随机发牌。

使用O(n) Knuth Shuffle您可以一次将一张卡片从一个数组传递到另一个数组。

您将卡片传递到的每个新阵列都将是不同人的手牌。

继续从牌组阵列中每次向每个阵列添加 1 张牌,直到每个玩家拥有规则要求的牌数。

此外,不要依赖随机数是否相等。请参阅stupid-sort 。寻找其他模式。就像随机数量的卡片%cards_left一样,你应该停止分发卡片。

根据请求更新代码示例:

public static void shuffle (int[] array) {
for(int n = array.length; (n > 1);) {
int k = gen.nextInt(n--);
int temp = array[n];
array[n] = array[k];
array[k] = temp;
}
}

关于java - 两个随机数发生器(发牌),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230952/

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