如何复制java卡,使用java做一个简单的集卡程序

使用java做一个简单的集卡程序

本次设想的是要集齐4张卡,每张卡的概率都是25%,如果每个用户集齐需要多少次才能集合完毕

public class Test {

public static void main(String[] args) {

//1.总循环数(模拟用户)

for (int i = 0; i < 10000; i++)

{

int[] a = {1,2,3,4}; //4张卡片

//2.生成随机数sss并记录一个用户集卡完毕后的统计

for(int n = 0;;n++)

{

int index = (int) (Math.random() * a.length);

int sss=index+1;

//System.out.println(sss);

//3.如果a的数值等于sss的数值则a的数值等于0

for (int m = 0; m < a.length; m++)

{

if(a[m] == sss)

{

a[m] = 0;

}

}

//System.out.println(Arrays.toString(a));

//如果a数组的和都等于0则跳出循环,并记录本次循环次数

if(Arrays.stream(a).sum()==0)

{

int s = n+1;

System.out.println(s);

break;

}

}

}

}

}

最后随便统计了下数据

c6513ba27a459e644e0ef800a1ce5b2d.png

第二次做了一个记录,用于记录用户抽取几次才能成功

public class Test {

public static void main(String[] args) {

Mapmap = new HashMap();

//1.总记录数

for (int i = 0; i < 10000; i++)

{

int[] a = {1,2,3,4};

//2.生成随机数sss并记录集卡完毕后的统计

for(int n = 0;;n++)

{

int index = (int) (Math.random() * a.length);

int sss=index+1;

//System.out.println(sss);

//3.如果a的数值等于sss的数值则a的数值等于0

for (int m = 0; m < a.length; m++)

{

if(a[m] == sss)

{

a[m] = 0;

}

}

//System.out.println(Arrays.toString(a));

//如果a数组的和都等于0则跳出循环,并记录本次循环次数

if(Arrays.stream(a).sum()==0)

{

int s = n+1;

//判断 s 值是否等于当前值的 s

if(map.containsKey(s)){

//若相等,则把 s 值每次加一

map.put(s, map.get(s)+1);

}else{

//若不相等,则放入map,并且设置 s 为1

map.put(s,1);

}

//打印输出s(比对map中的数据)

//System.out.println(s);

break;

}

}

}

Set res = map.keySet();

for (Integer im : res) {

System.out.println("用户集卡" + im + "次成功的共有" + map.get(im)+"人");

}

}

}

最后打印输出一下

ea01b5fd16152c2b741ed77ee112ab0f.png

本文地址:https://blog.csdn.net/weixin_42504094/article/details/112236826

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值