Java中產生隨機數字
1、呼叫java.lang下面Math類別中的random()方法產生隨機數字
#新建一個文件後綴名為java的文件,文件名稱取為MyRandom,該類別中寫如下的程式碼:
public class MyRandom { public static void main(String[] args) { int radom = (int)(Math.random()*10); System.out.println(radom); } }
其中Math.random() //產生0~1之間的一個隨機小數。
產生一個0~9之間的整數為:(int)(Math.random()*10);
產生一個1~10之間的整數則可以寫著: (int)(Math.random()*10 1);
#以此類推:產生一個0~n之間的數就該寫:Math.random()*n;
取出一個指定長度大小的隨機正整數:
public static int buildRandom(int length) { int num = 1; double random = Math.random(); if (random < 0.1) { random = random + 0.1; } for (int i = 0; i < length; i++) { num = num * 10; } return (int) ((random * num)); }
2、呼叫java.util下面Random類別,此類的實例用於產生偽隨機數流,產生一個隨機整數,則調用類別的nextInt()方法
使用Random類別之前,則在套件下導入java.util.Random ;程式碼為:
import java.util.Random; public class MyRandom { public static void main(String[] args) { Random rand = new Random(); int rInt = rand.nextInt(10); System.out.println(rInt); } }
其中Random rand = new Random()是建立一個新隨機數產生器;rand.nextInt(int n)是從此隨機數產生器的序列中取出的、在0(包括)和指定值n(不包括)之間均勻分佈的int值。
Java中在指定的整數範圍類,循環產生不相同的隨機數
以產生6位20以內不相同的隨即整數為例如下:
public class MyRandom { public static void main(String[] args) { int n = 20; Random rand = new Random(); boolean[] bool = new boolean[n]; int randInt = 0; for(int i = 0; i < 6 ; i++) { do { randInt = rand.nextInt(n); }while(bool[randInt]); bool[randInt] = true; System.out.println(randInt); } } }
其中用布林變數數組來儲存是否產生了該數字。生成後,該數字作為布林數組下表的對應布林值變成了true,下一次生成該數字就會再次進入do...while循環生成數字直到產生沒有生成過的數字。
例如:產生一個int型別的陣列,長度為50的,並向其中隨即插入0-50之間的數,且無法重複。
程式碼如下:
public class MyRandom { public static void main(String[] args) { int[] intRandom = new int[50]; List mylist = new ArrayList(); //生成数据集,用来保存随即生成数,并用于判断 Random rd = new Random(); while(mylist.size() < 50) { int num = rd.nextInt(51); if(!mylist.contains(num)) { mylist.add(num); //往集合里面添加数据。 } } for(int i = 0;i <mylist.size();i++) { intRandom[i] = (Integer)(mylist.get(i)); } } } /** * 随机产生指定的范围不重复的集合 * @param size * @return */ public static Set<Integer> generateRandomArray(int size){ Set<Integer> set = new LinkedHashSet<Integer>(); //集合是没有重复的值,LinkedHashSet是有顺序不重复集合,HashSet则为无顺序不重复集合 Integer num = size; Integer range = size; Random ran = new Random(); while(set.size() < num){ Integer tmp = ran.nextInt(range); //0-51之间随机选一个数 set.add(tmp);//直接加入,当有重复值时,不会往里加入,直到set的长度为52才结束 } return set; }
更多java知識請關注java基礎教學欄位。
以上是java產生不重複隨機數的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

WebStorm Mac版
好用的JavaScript開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器