java产生不重复随机数

该程序使用Java实现生成指定范围内不重复的随机数。用户可以选择是否包含0,并设定随机数个数和范围。当数组长度大于随机数个数时,程序会提示并退出,确保无重复。程序通过循环和判断避免随机数重复,适用于教学或简单随机数生成需求。
摘要由CSDN通过智能技术生成

示列图片1
示例图片2

java产生不重复随机数【史上最直接】

①本程序分“包含0”和“不包含0”两种情形,可自由选择。
②当“数组长度”大于“不重复随机数个数”程序会自动退出。
③若想自定义修改不重复随机数范围,可在源代码自行修改。

import java.util.Random;
import java.util.Scanner;
public class CSDN_procut {
    public static void main(String[] args) {
        Random suiji = new Random();
        Scanner input = new Scanner(System.in);

        int kz;


        System.out.print("你想生成的不重复随机数范围是?不重复随机数范围包含0请按4,不重复随机数范围不包含0请按6");
        int xz=input.nextInt();
        switch (xz)
        {
            case 4:
            {
                System.out.println("好的,你已经选择包含0");
                System.out.println("你想产生的不重复随机数范围是0到多少?请输入");
                kz=input.nextInt();


                int leng = 0;
                System.out.println("请输入数组长度");
                leng = input.nextInt();
                int[] array;
                array = new int[leng];


                if(array.length>kz+1)
                {
                    System.out.println("数组长度大于随机数个数,会有重复的,请保证数组长度小于等于随机数个数");
                    break;
                }


                int i=0;
                int k=0;
                int t=0;
                int j=0;

                for(;i<leng;++i)
                {
                    if(k==0)
                    {
                        array[i]=suiji.nextInt(kz+1);
                        k=k+1;
                    }
                    else
                    {
                        t=suiji.nextInt(kz+1);

                        for(j=0;j<k;++j)
                        {

                            if(array[j]==t)
                            {
                                j=-1;
                                t=suiji.nextInt(kz+1);
                                continue;
                            }

                        }
                        array[j]=t;
                        ++k;
                    }


                }


                System.out.println();
                System.out.println();

                for(int kk=0;kk<array.length;++kk)
                {
                    System.out.println("第"+(kk+1)+"个数据是:"+array[kk]);
                }

                break;
            }

            case 6:
            {
                System.out.println("好的,你已经选择不包含0");
                System.out.println("你想产生的不重复随机数范围是1到多少?请输入");
                kz=input.nextInt();



                int leng = 0;
                System.out.println("请输入数组长度");
                leng = input.nextInt();
                int[] array;
                array = new int[leng];


                if(array.length>kz)
                {
                    System.out.println("数组长度大于随机数个数,会有重复的,请保证数组长度小于等于随机数个数");
                    break;
                }



                int i=0;
                int k=0;
                int t=0;
                int j=0;

                for(;i<leng;++i)
                {
                    if(k==0)
                    {
                        array[i]=suiji.nextInt(kz)+1;
                        k=k+1;
                    }
                    else
                    {
                        t=suiji.nextInt(kz)+1;

                        for(j=0;j<k;++j)
                        {

                            if(array[j]==t)
                            {
                                j=-1;
                                t=suiji.nextInt(kz)+1;
                                continue;
                            }

                        }
                        array[j]=t;
                        ++k;
                    }


                }


                System.out.println();
                System.out.println();

                for(int kk=0;kk<array.length;++kk)
                {
                    System.out.println("第"+(kk+1)+"个数据是:"+array[kk]);
                }
                break;
            }

            default:
            {
                System.out.println("输入有误,请重新输入");
                break;
            }

        }





    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值