使用随机函数来实现抽奖规则的模拟操作

在该程序当中一共生成了三组随机数:

第一组随机数用于表示抽奖盒子当中的0-9 10 个随机小球

第二组随机数表示1-10 这10个人随机从抽奖盒子当中所拿到的10个不同的位置处的小球

第三组随机数表示1-10 这10个人已经拥有的随机数字

当某一个人所拥有的随机数和从盒子当中所抽取到的随机数字相同的时候,则表示其中奖,若没有匹配则没有中奖

package testjava;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class Test3 {
	public static void main(String[] args) {
//		构建抽奖盒子
		List<Integer> list=new ArrayList<Integer>();
		int [] box=new int[10];
		Random random=new Random(15);
		while(list.size()<10)
		{
			int r=random.nextInt(10);
			if(list.contains(r))
				continue;
			list.add(r);
		}
		int i=0;
		System.out.println("盒子当中的十个随机数为:");
		for (Integer integer : list)
		{
			System.out.print(integer+",");
			box[i]=integer;
			i++;
		}
		System.out.println();
		
//设定1-10十个人所选择的随机数的位置,即将10个固定位置的随机数打乱位置分配给10个人,以此来模拟10个人的随机抽奖操作
		Random random3=new Random(8);
		List<Integer> arrayNumber=new ArrayList<Integer>();
		while(arrayNumber.size()<10)
		{
			int number=random3.nextInt(10);
			if(arrayNumber.contains(number))
				continue;
			arrayNumber.add(number);
		}
		System.out.println("10个人依次选择的数字下标为:");
		for (Integer integer : arrayNumber) {
			System.out.print(integer+",");
		}
		System.out.println();
		
		System.out.println("10个人所抽中的数字分别为:");
		Map<String, Integer> choseNumber=new HashMap<String,Integer>();
		for(int j=0;j<10;j++)
		{
			choseNumber.put("person"+j, box[arrayNumber.get(j)]);
		}
		for(int j=0;j<10;j++)
		{
			System.out.print(choseNumber.get("person"+j)+",");
		}
		
//设定10个抽奖人已经拥有的随机数
		Random random2=new Random(10);
		List<Integer> numbers=new ArrayList<Integer>();
		while(numbers.size()<10)
		{
			int number=random2.nextInt(10);
			if(numbers.contains(number))
				continue;
			numbers.add(number);
		}
//		设定10个抽奖人
		Map<String, Integer> persons=new HashMap<String, Integer>();
		for(int j=0;j<10;j++)
		{
			persons.put("person"+j,numbers.get(j));
		}
		System.out.println();
		System.out.println("10个抽奖人所拥有的随机数分别为:");
		for(int j=0;j<10;j++)
		{
			System.out.print(persons.get("person"+j)+",");
		}
		
//		对所拥有的字符串和已经抽中的字符串对象进行匹配操作,来判断当前对象是否中奖
		for(int j=0;j<10;j++)
		{
			if(persons.get("person"+j)==choseNumber.get("person"+j))
			{
				System.out.println("当前中奖人为:person"+j+",中奖编号为:"+persons.get("person"+j));
			}
		}
	}
}

程序运行结果:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值