ホームページ Java &#&チュートリアル Javaでさまざまな乱数を取得する方法

Javaでさまざまな乱数を取得する方法

Jan 02, 2020 am 09:21 AM
java 方法 得る 乱数

Javaでさまざまな乱数を取得する方法

3 つの生成方法:

1. System.currentTimeMillis() 数値を通じて現在の時刻ミリ秒のロング型を取得します。

2. Math.random() を通じて 0 と 1 の間の double 値を返します。

3. Random クラスを使用して乱数を生成する これは、強力な機能を備えたプロフェッショナルな Random ツール クラスです。

最初のタイプ:

System.currentTimeMillis() を通じて乱数を取得します。実際には、long 型の現在時刻をミリ秒単位で取得します。使用方法は次のとおりです。

final long l = System.currentTimeMillis();
ログイン後にコピー

(無料ビデオ チュートリアル共有: java ビデオ チュートリアル)

int型の整数を取得したい場合は、次のようにするだけです。上記の結果を int に変換するには、次のように入力するだけです。たとえば、[0, 100) の間の整数を取得します。メソッドは次のとおりです:

final long l = System.currentTimeMillis();
final int i = (int)( l % 100 );
ログイン後にコピー

2 番目:

Math.random() を通じて乱数を取得します。実際、0 (両端を含む) と 1 (両端を含まない) の間の double 値を返します。使用方法は以下のとおりです。

final double d = Math.random();
ログイン後にコピー

int 型の整数を取得するには、上記の結果を int 型に変換するだけです。たとえば、[0, 100) の間の整数を取得します。メソッドは次のとおりです:

final double d = Math.random();
final int i = (int)(d*100);
ログイン後にコピー

3 番目のメソッド:

Random クラスを通じて乱数を取得します。使用方法は以下の通りです:

1. Random オブジェクトを作成します。 Random オブジェクトを作成するには、次の 2 つの方法があります。

Random random = new Random();//默认构造方法
Random random = new Random(1000);//指定种子数字
ログイン後にコピー

(02) Random オブジェクトを通じて乱数を取得します。 Random でサポートされるランダム値のタイプには、boolean、byte、int、long、float、double が含まれます。

たとえば、[0, 100) の間の int 整数を取得します。方法は次のとおりです。

int i2 = random.nextInt(100);
ログイン後にコピー

コード例:

 1 import java.util.Random;
 2 import java.lang.Math;
 3 
 4 /**
 5  * java 的随机数测试程序。共3种获取随机数的方法:
 6  *   (01)、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。
 7  *   (02)、通过Math.random()返回一个0到1之间的double值。
 8  *   (03)、通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大。
 9  *
10  * @author skywang
11  * @email kuiwu-wang@163.com
12  */
13 public class RandomTest{
14 
15     public static void main(String args[]){
16 
17         // 通过System的currentTimeMillis()返回随机数
18         testSystemTimeMillis();
19 
20         // 通过Math的random()返回随机数
21         testMathRandom();
22 
23         // 新建“种子为1000”的Random对象,并通过该种子去测试Random的API
24         testRandomAPIs(new Random(1000), " 1st Random(1000)");
25         testRandomAPIs(new Random(1000), " 2nd Random(1000)");
26         // 新建“默认种子”的Random对象,并通过该种子去测试Random的API
27         testRandomAPIs(new Random(), " 1st Random()");
28         testRandomAPIs(new Random(), " 2nd Random()");
29     }
30 
31     /**
32      * 返回随机数-01:测试System的currentTimeMillis()
33      */
34     private static void testSystemTimeMillis() {
35         // 通过
36         final long l = System.currentTimeMillis();
37         // 通过l获取一个[0, 100)之间的整数
38         final int i = (int)( l % 100 );
39 
40         System.out.printf("\n---- System.currentTimeMillis() ----\n l=%s i=%s\n", l, i);
41     }
42 
43 
44     /**
45      * 返回随机数-02:测试Math的random()
46      */
47     private static void testMathRandom() {
48         // 通过Math的random()函数返回一个double类型随机数,范围[0.0, 1.0)
49         final double d = Math.random();
50         // 通过d获取一个[0, 100)之间的整数
51         final int i = (int)(d*100);
52 
53         System.out.printf("\n---- Math.random() ----\n d=%s i=%s\n", d, i);
54     }
55 
56 
57     /**
58      * 返回随机数-03:测试Random的API
59      */
60     private static void testRandomAPIs(Random random, String title) {
61         final int BUFFER_LEN = 5;
62 
63         // 获取随机的boolean值
64         boolean b = random.nextBoolean();
65         // 获取随机的数组buf[]
66         byte[] buf = new byte[BUFFER_LEN];
67         random.nextBytes(buf);
68         // 获取随机的Double值,范围[0.0, 1.0)
69         double d = random.nextDouble();
70         // 获取随机的float值,范围[0.0, 1.0)
71         float f = random.nextFloat();
72         // 获取随机的int值
73         int i1 = random.nextInt();
74         // 获取随机的[0,100)之间的int值
75         int i2 = random.nextInt(100);
76         // 获取随机的高斯分布的double值
77         double g = random.nextGaussian();
78         // 获取随机的long值
79         long l = random.nextLong();
80 
81         System.out.printf("\n---- %s ----\nb=%s, d=%s, f=%s, i1=%s, i2=%s, g=%s, l=%s, buf=[",
82                 title, b, d, f, i1, i2, g, l);
83         for (byte bt:buf) 
84             System.out.printf("%s, ", bt);
85         System.out.println("]");
86     }
87 }
ログイン後にコピー

おすすめの関連記事とチュートリアル: java 入門チュートリアル

以上がJavaでさまざまな乱数を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Javaの平方根

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Javaの完全数

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーター

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Javaのアームストロング数

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

ジャワのウェカ

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

Java Springのインタビューの質問

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8 Stream Foreachから休憩または戻ってきますか?

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Javaのスミス番号

See all articles