java 獲取隨機數字的三種方法

?

?

?

 1 //方法1 (數據類型)
 2 //(最小值+Math.random()*(最大值-最小值+1))
 3 // 例:
 4  (int)(1+Math.random()*(10-1+1)) //從1到10的int型隨數
 5 
 6 方法2 獲得隨機數
 7  for (int i=0;i<30;i++)
 8  {
 9 System.out.println((int)(1+Math.random()*10));
10 }
11  (int)(1+Math.random()*10) 
12 //通過java.Math包的random方法得到1-10的int隨機數 
13 //公式是:最小值---最大值(整數)的隨機數 類型)最小值+Math.random()*最大值
14 
15 方法3 Random ra =new Random(); 
16 for (int i=0;i<30;i++)
17  {System.out.println(ra.nextInt(10)+1);} 
18 通過java.util包中的Random類的nextInt方法來得到1-10的int隨機數
19 
20  
21 生成0到1之間的任意隨機小數:
22 
23 生成[0,d)區間的隨機小數,d為任意正的小數,則只需要將nextDouble方法的返回值乘以d即可。
24 
25 [n1,n2]
26 
27 也就是 ra.nextDouble() * (n2-n1)+n1

?

?

java產生隨機數的幾種方式 一.在j2se里我們可以使用Math.random()方法來產生一個隨機數,這個產生的隨機數是0-1之間的一個double,我們可以把他乘以一定的數,比如說乘以100,他就是個100以內的隨機,這個在j2me中沒有。

二.在java.util這個包里面提供了一個Random的類,我們可以新建一個Random的對象來產生隨機數,他可以產生隨機整數、隨機float、隨機double,隨機long,這個也是我們在j2me的程序里經常用的一個取隨機數的方法。

三.在我們的System類中有一個currentTimeMillis()方法,這個方法返回一個從1970年1月1號0點0分0秒到目前的一個毫秒數,返回類型是long,我們可以拿他作為一個隨機數,我們可以拿他對一些數取模,就可以把他限制在一個范圍之內啦

其實在Random的默認構造方法里也是使用上面第三種方法進行隨機數的產生的

對于方法二中的Random類有以下說明:

java.util.Random類有兩種方式構建方式:帶種子和不帶種子

不帶種子: 此種方式將會返回隨機的數字,每次運行結果不一樣

public?class?RandomTest?{ public?static?void?main(String[]?args)?{ java.util.Random?r=new?java.util.Random(); for(int?i=0;i<10;i++){ ????System.out.println(r.nextInt()); }

} 帶種子: 此種方式,無論程序運行多少次,返回結果都是一樣的

public?static?void?main(String[]?args)?{ java.util.Random?r=new?java.util.Random(10); for(int?i=0;i<10;i++){ ????System.out.println(r.nextInt()); } }

兩種方式的差別在于

(1)?首先請打開Java?Doc,我們會看到Random類的說明:

此類的實例用于生成偽隨機數流,此類使用?48?位的種子,該種子可以使用線性同余公式對其進行修改(請參閱?Donald?Knuth?的《The?Art?of?Computer?Programming,?Volume?2》,第?3.2.1?節)。

如果用相同的種子創建兩個?Random?實例,則對每個實例進行相同的方法調用序列,它們將生成并返回相同的數字序列。為了保證實現這種特性,我們為類Random指定了特定的算法。為了?Java?代碼的完全可移植性,Java?實現必須讓類?Random?使用此處所示的所有算法。但是允許?Random?類的子類使用其他算法,只要其符合所有方法的常規協定即可。

Java?Doc對Random類已經解釋得非常明白,我們的測試也驗證了這一點。

(2)?如果沒有提供種子數,Random實例的種子數將是當前時間的毫秒數,可以通過System.currentTimeMillis()來獲得當前時間的毫秒數。打開JDK的源代碼,我們可以非常明確地看到這一點。

public?Random()?{?this(System.currentTimeMillis());?}

另外:

random對象的nextInt(),nextInt(int?n)方法的說明:

int?nextInt() ????返回下一個偽隨機數,它是此隨機數生成器的序列中均勻分布的?int?值。 int?nextInt(int?n) ????返回一個偽隨機數,它是從此隨機數生成器的序列中取出的、在?0(包括)和指定值(不包括)之間均勻分布的?int值。??

轉載于:https://www.cnblogs.com/zjy954/p/5052951.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375266.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LVS原理及實踐(NAT模式)

LVS無論NAT及DR模式&#xff0c;均要求LVS server和real server在同一個網段內&#xff0c;NAT需要把lvs server當作各個realserver的默認網關&#xff0c;DR模式采用修改mac地址直接從數據鏈路層轉發、要求必須在同一個物理網段內 LVS-NAT的實驗網絡拓撲&#xff1a; 采用青…

基于Maven的spring_security入門

配置文件的修改點沒什么變化&#xff0c;可以參考&#xff1a;http://blog.csdn.net/ouitiken/article/details/8830505 pom.xml的依賴參考&#xff1a; <dependencies><!-- Commons --><dependency><groupId>commons-dbcp</groupId><artifac…

使用Vitamio打造自己的Android萬能播放器(5)——在線播放(播放優酷視頻)

前言 為了保證每周一篇的進度&#xff0c;又由于Vitamio新版本沒有發布&#xff0c; 決定推遲本地播放的一些功能&#xff08;截圖、視頻時間、尺寸等&#xff09;&#xff0c;跳過直接寫在線播放部分的章節。從Vitamio的介紹可以看得出&#xff0c;其支持http、m3u8等多種網絡…

20個新鮮出爐的網站模板【HTML PSD】

這里給大家分享20 個新鮮出爐的免費網站模板。這些設計元素將成為你下一個項目的重要素材&#xff0c;可以幫你節省很多的時間。與往常一樣&#xff0c;我們經常漫游網絡&#xff0c;尋找最好的資源&#xff0c; HTML、CSS 和 PSD 等等&#xff0c;記得關注啊。 您可能感興趣的…

位運算總結(百科)

位運算 程序中的所有數在計算機內存中都是以二進制的形式儲存的。位運算就是直接對整數在內存中的二進制位進行操作。 位運算 - 定義 在很多系統程序中常要求在位(bit)一級進行運算或處理。&#xff23;語言提供了位運算的功能&#xff0c; 這使得&#xff23;語言也能像匯編語…

歸檔(轉)

如果是自定義類型的歸檔和解檔&#xff0c;是按以下步驟實現如果不是自定義類型&#xff0c;直接第四步就可以。一、創建一個類User二、在User.h中遵循NSCoding協議 #import <Foundation/Foundation.h> interface User : NSObject<NSCoding> { int _userAge;//例子…

相遇

CPU直接識別的唯一語言是機器語言,為了克服機器語言的缺點,便將機器指令用便于記憶、并能描述指令功能的符號來表示稱為指令助記符簡稱助記符 匯編語言由匯編指令,偽指令,和其它符號組成 匯編指令:機器碼的助記符,有對應的機器碼 偽指令:沒有對應的機器碼由編譯器執行 其它符號…

相識

編譯器&#xff1a;MASM 調試程序&#xff1a;DEBUG 編輯器&#xff1a;EditPlus

MySQL show命令的用法

show tables或show tables from database_name; // 顯示當前數據庫中所有表的名稱show databases; // 顯示mysql中所有數據庫的名稱show columns from table_name from database_name; 或show columns from database_name.table_name; // 顯示表中列名稱show grants for user_n…

怎么用代碼制作WordPress的歸檔頁面

先看看效果&#xff0c;這個是我網站的歸檔頁面&#xff1a;http://www.shenjieblog.com/archives 其實WordPress自帶了一個歸檔的功能&#xff0c;但是只能顯示在網頁中的某一個部分&#xff0c;但是我想單獨制作一個歸檔頁面&#xff0c;因為看見很多網站都有這個&#xff0c…

【web必知必會】—— 使用DOM完成屬性填充

本文介紹了使用DOM的簡單方法實現動態加載圖片的功能。 前文介紹了&#xff1a; 1 DOM四個常用的方法 首先看一下效果&#xff0c;初始時是一個相冊&#xff0c;可以點擊導航&#xff0c;切換圖片&#xff0c;并切換下方顯示內容&#xff1a; 點擊house&#xff0c;可以動態的切…

地址總線 數據總線

地址總線&#xff1a; CPU地址總線的寬度決定了它能尋址多少個內存單元地址,一個CPU有N根地址總線那么它的尋址能力為2^N次方。8086CPU地址總線寬度為20可尋址2^20次方個內存單元地址大小為1M。80386地址總線寬度為32可尋址內存為4GB 數據總線&#xff1a; CPU與存儲器之間的數…

Spring事務配置方式(一) 攔截器方式配置

一、使用<tx:advice>和<aop:config>配置事務 <!-- 配置事務管理器 --><bean id"transactionManager" class"org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name"dataSource" ref&qu…

8086寄存器組

寄存器(14個)|AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES| >通用寄存器 數據寄存器(存放一般數據)AX (AH,AL) | BX (BH,BL) | CX (CH,CL) | DX (DH,DL) 指針寄存器 堆棧指針 基址指針SP BP (SS:SP) 變址寄存器 源地址 目的地址SI …

學習動態性能表(10)--v$session_longops

學習動態性能表 第十篇--V$SESSION_LONGOPS 2007.6.7 本視圖顯示運行超過6秒的操作的狀態。包括備份&#xff0c;恢復&#xff0c;統計信息收集&#xff0c;查詢等等。 要監控查詢執行進展狀況&#xff0c;你必須使用cost-based優化方式&#xff0c;并且&#xff1a; 設置TIME…

存儲器

存儲器以字節為單位存儲信息,一個存儲單元存儲一個字節。一個字需要用兩個連續的存儲單元。 每一個存儲單元有唯一的地址&#xff0c;稱為存儲單元地址。

JDBC常用API小結

建立數據庫鏈接的三種方式&#xff1a; package com.victor_01;import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties;import org.junit.Test;public class Test1 {private String…

學習動態性能表(12)--v$db_object_cache

學習動態性能表 第12篇--V$DB_OBJECT_CACHE 2007.6.4 本視圖提供對象在library cache(shared pool)中對象統計&#xff0c;提供比v$librarycache更多的細節&#xff0c;并且常用于找出shared pool中的活動對象。 v$db_object_cache中的常用列&#xff1a; OWNER&#xff1a;對…

Java Platform Standard Edition 8 Documentation

下面這個圖挺有用的&#xff0c;收藏一下。Oracle has two products that implement Java Platform Standard Edition (Java SE) 8: Java SE Development Kit (JDK) 8 and Java SE Runtime Environment (JRE) 8.JDK 8 is a superset of JRE 8, and contains everything that is…