java生成隨機(jī)數(shù)的常用方法分析
本文實(shí)例講述了java生成隨機(jī)數(shù)的常用方法。分享給大家供大家參考,具體如下:
前因:
經(jīng)常性的,測(cè)試一些功能時(shí)都需要造一些假數(shù)據(jù),每次都上網(wǎng)來(lái)查一下怎么生成隨機(jī)數(shù)。這回我把查到的方法自己整理一下,下次在用不用到處找了。
生成隨機(jī)數(shù)的幾種方法:
1. 使用Math.random()生成隨機(jī)數(shù)
直接貼幾個(gè)小方法
/** * 獲取0.0-1.0之間的隨機(jī)小數(shù) */ private double test1() { double num = Math.random(); return num; } /** * 獲取兩個(gè)數(shù)之間的隨機(jī)小數(shù) */ private double test2(int min, int max) { return min + Math.random() * (max - min); } /** * 獲取兩個(gè)數(shù)之間的隨機(jī)整數(shù) */ private int test3(int min, int max) { return (int) (min + Math.random() * (max - min)); }
2. 使用java.util.Random類生成隨機(jī)數(shù)
簡(jiǎn)單介紹類中的幾個(gè)方法
方法:
public int nextInt() :隨機(jī)生成一個(gè)int型數(shù)值
public int nextInt(int n) :隨機(jī)生成一個(gè) >=0 并且 <n 的int型數(shù)值,要求n>0
public long nextLong() :隨機(jī)生成一個(gè)long型數(shù)值
public float nextFloat() :隨機(jī)生成一個(gè)float型數(shù)值
public double nextDouble() :隨機(jī)生成一個(gè)double型數(shù)值
public double nextGaussian() :隨機(jī)生成一個(gè)符合正態(tài)分布的double型數(shù)值,數(shù)值基本在0左右搖擺,有人做了200萬(wàn)次循環(huán),驗(yàn)證了值在-6~6之間
public boolean nextBoolean() :隨機(jī)生成一個(gè)boolean類型的值
構(gòu)造:
public Random()
public Random(long seed)
問:seed是干嘛用的?
seed 是 Random 生成隨機(jī)數(shù)時(shí)使用的參數(shù)。
無(wú)參構(gòu)造函數(shù)每次都使用當(dāng)前時(shí)間作為種子,隨機(jī)性更強(qiáng)。
而含參的構(gòu)造函數(shù)其實(shí)是偽隨機(jī),更有可預(yù)見性。
3. 使用System.currentTimeMillis()取模
比如想取1000以內(nèi)的隨機(jī)數(shù),就System.currentTimeMillis()%1000
。
PS:這里再為大家提供幾款功能類似的在線工具供大家參考:
在線隨機(jī)數(shù)字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu
在線隨機(jī)字符/隨機(jī)密碼生成工具:
http://tools.jb51.net/aideddesign/rnd_password
高強(qiáng)度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
MyBatis-Plus多表聯(lián)查的實(shí)現(xiàn)方法(動(dòng)態(tài)查詢和靜態(tài)查詢)
本文用示例介紹使用MyBatis-Plus進(jìn)行多表查詢的方法,包括靜態(tài)查詢和動(dòng)態(tài)查詢,通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-03-03Elasticsearch8.1中的Script使用實(shí)例深入解讀
這篇文章主要為大家介紹了Elasticsearch8.1中的Script使用實(shí)例深入解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10SpringCloud項(xiàng)目的log4j2漏洞解決方案詳解流程
很多小伙伴因?yàn)長(zhǎng)og4j2的驚爆0Day漏洞一時(shí)束手無(wú)策,這里提供最終解決方案可以進(jìn)行一個(gè)版本號(hào)的升級(jí),感興趣的朋友來(lái)看看吧2022-04-04SpringAop @Around執(zhí)行兩次的原因及解決
這篇文章主要介紹了SpringAop @Around執(zhí)行兩次的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java調(diào)用MySQL存儲(chǔ)過程并獲得返回值的方法
這篇文章主要介紹了Java調(diào)用MySQL存儲(chǔ)過程并獲得返回值的方法,實(shí)例分析了java實(shí)現(xiàn)MySQL存儲(chǔ)過程的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07