Java中的随机数生成器
时间:2020-02-23 14:35:32 来源:igfitidea点击:
在本教程中,我们将看到随机数生成器。
我们可能需要要求我们想要生成随机数以执行某些操作的要求。
例如:
假设我们正在创建一个使用骰子的游戏,用于每个玩家的点数。
只要播放器使用骰子,我们可以将逻辑生成随机数。
在示例的帮助下,有许多方法可以在Java.let中生成随机数。
使用随机类
我们可以使用java.util.random在Java中生成随机数。
我们可以使用随机类生成整数,浮点,双,布尔值等。
让我们通过示例来理解:
package org.igi.theitroad; import java.util.Random; public class RandomClassGeneratorMain { public static void main(String[] args) { Random randomGenerator=new Random(); System.out.println("============================"); System.out.println("Generating 5 random integers"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(randomGenerator.nextInt()); } System.out.println("============================"); System.out.println("Generating 5 random double"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(randomGenerator.nextDouble()); } System.out.println("============================"); System.out.println("Generating 5 random floats"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(randomGenerator.nextFloat()); } System.out.println("============================"); System.out.println("Generating 5 random booleans"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(randomGenerator.nextBoolean()); } } }
输出:
============================ Generating 5 random integers ============================ 1342618771 -1849662552 1719085329 2141641685 -819134727 ============================ Generating 5 random doubles ============================ 0.1825454639005325 0.5331492085899436 0.830900901839756 0.8490109501015005 0.7968080535091425 ============================ Generating 5 random floats ============================ 0.9831014 0.24019146 0.11383718 0.42760438 0.019532561 ============================ Generating 5 random booleans ============================ false false true true false
使用ThreadLocalRandom类
我们可以使用ThreadLocalRandom类生成随机数。
此类在Java 7中引入了Java 7. java.util.random是线程安全但多个线程尝试访问相同的对象,将存在很多争用和性能问题。
在ThreadLocalRandom的情况下会有很多争用和性能问题。
,每个线程都会生成自己的随机数,不会有任何争用。
让我们通过示例来理解:
package org.igi.theitroad; import java.util.concurrent.ThreadLocalRandom; public class ThreadLocalRandomMain { public static void main(String[] args) { System.out.println("============================"); System.out.println("Generating 5 random integers"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(ThreadLocalRandom.current().nextInt()); } System.out.println("============================"); System.out.println("Generating 5 random doubles"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(ThreadLocalRandom.current().nextDouble()); } System.out.println("============================"); System.out.println("Generating 5 random floats"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(ThreadLocalRandom.current().nextFloat()); } System.out.println("============================"); System.out.println("Generating 5 random booleans"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(ThreadLocalRandom.current().nextBoolean()); } } }
输出:
============================ Generating 5 random integers ============================ -315342453 -1922639586 -19084346 -615337866 -1075097641 ============================ Generating 5 random doubles ============================ 0.9074981945011997 0.7626761438609163 0.4439078754038527 0.8663565773294881 0.8133933685024771 ============================ Generating 5 random floats ============================ 0.50696343 0.4109127 0.4284398 0.37340754 0.28446126 ============================ Generating 5 random booleans ============================ false true false false true
使用math.random方法
我们可以使用math.random的方法生成随机双打。
package org.igi.theitroad; public class MathRandomMain { public static void main(String[] args) { System.out.println("============================"); System.out.println("Generating 5 random doubles"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(Math.random()); } } }
输出:
============================ Generating 5 random doubles ============================ 0.3644159931296438 0.07011727069753859 0.7602271011682066 0.914594143579762 0.6506514073704143
在范围之间产生随机数
如果要在某个范围之间生成随机数,则可以使用随机和ThreadLocalRandom来执行此操作。
package org.igi.theitroad; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; public class GenerateRandomInRangeMain { public static void main(String[] args) { int minimum=10; int maximum=20; System.out.println("============================"); System.out.println("Generating 5 random integer in range of 10 to 20 using Random"); System.out.println("============================"); Random randomGenerator=new Random(); for (int i = 0; i < 5; i++) { System.out.println(randomGenerator.nextInt((maximum - minimum) + 1) + minimum); } System.out.println("============================"); System.out.println("Generating 5 random integer in range of 10 to 20 using ThreadLocalRandom"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(ThreadLocalRandom.current().nextInt(minimum,maximum+1)); } System.out.println("============================"); System.out.println("Generating 5 random integer in range of 10 to 20 using Math.random"); System.out.println("============================"); for (int i = 0; i < 5; i++) { System.out.println(minimum + (int)(Math.random() * ((maximum - minimum) + 1))); } } }
输出:
============================ Generating 5 random integer in range of 10 to 20 using Random ============================ 11 18 14 13 15 ============================ Generating 5 random integer in range of 10 to 20 using ThreadLocalRandom ============================ 10 12 13 13 16 ============================ Generating 5 random integer in range of 10 to 20 using Math.random ============================ 14 10 16 20 15