150天打卡day05_隨機(jī)數(shù)的學(xué)習(xí)
本節(jié)內(nèi)容
什么是隨機(jī)數(shù)?
隨機(jī)數(shù)的用途
隨機(jī)數(shù)的使用
隨機(jī)數(shù)案例_大球吃小球
隨機(jī)數(shù)
今天要學(xué)的隨機(jī)數(shù),在生活過程中很常見,例如丟硬幣,擲篩子等等,生活中的隨機(jī)真的是隨機(jī),但是計(jì)算機(jī)中的隨機(jī)并不是真的隨機(jī),計(jì)算機(jī)專家通過算法實(shí)現(xiàn)寫了一個(gè)隨機(jī)數(shù)發(fā)生器,就是用固定的套路寫的,其實(shí)就是利用隨機(jī)數(shù)發(fā)生器提供的也是偽隨機(jī)數(shù),有同學(xué)想了解偽隨機(jī)數(shù)請(qǐng)參考注解內(nèi)容

隨機(jī)數(shù)的用途
隨機(jī)數(shù)有著廣泛的用途,比如:測(cè)試,游戲,仿真以及安全領(lǐng)域都需要用到隨機(jī)數(shù),
最常見的是在用戶登錄或者注冊(cè)的時(shí)候通常需要我們?nèi)ポ斎胍恍?yàn)證碼
他主要的作用是為了防止有人頻繁的注冊(cè)而造成一些惡意的破壞
所以呢驗(yàn)證碼一般都是拿隨機(jī)數(shù)去生成的。
另外我們公司在進(jìn)行抽獎(jiǎng)的時(shí)候,往往也會(huì)通過隨機(jī)數(shù)來實(shí)現(xiàn),

如何使用隨機(jī)數(shù)
在Java中? 實(shí)現(xiàn)隨機(jī)數(shù)其實(shí)是比較簡(jiǎn)單的,因?yàn)橐呀?jīng)有現(xiàn)成的工具以及類了,
通常我們有兩種方法:
一種是通過Math.random()方法來隨機(jī)生成0~1之間的一個(gè)小數(shù)
還有一種是通過Random這個(gè)類,他是一個(gè)專門的API工具,可以幫助我們生成隨機(jī)數(shù),他的功能會(huì)更加強(qiáng)大一些
Math類
Java?中的 +、-、*、/ 和 % 等基本算術(shù)運(yùn)算符不能進(jìn)行更復(fù)雜的數(shù)學(xué)運(yùn)算,例如,三角函數(shù)、對(duì)數(shù)運(yùn)算、指數(shù)運(yùn)算等。于是 Java 提供了 Math 工具類來完成這些復(fù)雜的運(yùn)算。
在 Java 中?Math 類封裝了常用的數(shù)學(xué)運(yùn)算,提供了基本的數(shù)學(xué)操作,如指數(shù)、對(duì)數(shù)、平方根和三角函數(shù)等。
Math 類位于 java.lang 包,并且 Math 類中的所有方法都是類方法,可以直接通過類名來調(diào)用它們。
常見的使用
1.常量PI是π、E自然對(duì)數(shù)
2.函數(shù)sin(),cos()
3.生成隨機(jī)數(shù)的random()方法
Math.random方法
其實(shí)在Math類中也有一個(gè)random方法,該random方法的工作是生成一個(gè)[0,1)區(qū)間的隨機(jī)小數(shù)。(0到1之間不包含1的小數(shù))
通過閱讀Math類的源代碼可以發(fā)現(xiàn),Math類中的random方法就是直接調(diào)用Random類中的nextDouble方法實(shí)現(xiàn)的。
只是random方法的調(diào)用比較簡(jiǎn)單,所以很多程序員都習(xí)慣使用Math類的random方法來生成隨機(jī)數(shù)字。
Java的Math類提供了random()用于產(chǎn)生隨機(jī)數(shù),返回值是一個(gè)0-1之間的隨機(jī)小數(shù)。[0,1)
由于日常中生成整數(shù)會(huì)比較多,所以經(jīng)常得需要進(jìn)行強(qiáng)轉(zhuǎn),而且如果要算某個(gè)范圍內(nèi)的隨機(jī)數(shù),有個(gè)規(guī)律,隨機(jī)數(shù)乘以(最大值-最小值)+最小值
案例
生成 [1,10) 隨機(jī)整數(shù),注意類型之間的轉(zhuǎn)換
練習(xí):
Random類
其實(shí)任何邏輯都可以忘記,只需要記住咱們的公式就可以了如果還嫌棄麻煩,其實(shí)Java的API中還提供了一個(gè)類,這個(gè)類就是Random類是JavaUtil包中的一個(gè)隨機(jī)數(shù)類,里面封裝了大量的方法,他的作用就是幫助我們?nèi)ド梢幌盗械碾S機(jī)數(shù),其中有一個(gè)較為常見的方法,叫做nextInt()方法,看字面上的意思就是下一個(gè)整數(shù)的意思,他是幫助我們生成一個(gè)隨機(jī)的整數(shù),這倆沒有誰好誰壞,看自己哪個(gè)用的比較順手就用哪個(gè)就可以,使用這個(gè)類和學(xué)習(xí)Scanner類似,咱們先來看一下使用的步驟是什么。
導(dǎo)入Random API: import java.util.Random;
創(chuàng)建Random對(duì)象:Random random = new Random();
調(diào)用random的方法獲得隨機(jī)數(shù):
Random類案例
練習(xí):生成[10,100)之間的隨機(jī)數(shù)
所以得出公式:
點(diǎn)贊關(guān)注不迷路~筆芯?
