> For the complete documentation index, see [llms.txt](https://yangsx95.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yangsx95.gitbook.io/notes/programming-language/java/chang-yong-api/random.md).

# Random

**注意**:其实Java中是没有绝对随机的数!Java中的随机都是 *伪随机* 通过算法实现

**随机数的两种实现方式：**

利用`java.lang.Math`类中的random方法：

```java
static double random();//返回的是[0.0,1.0)之间的随机小数
```

利用`java.util.Random`类中的-正宗的求随机的数方式.

```java
int nextInt(int n);//返回的是\[0,n)之间的随机整数.
```

在`Random`类中有一个含有一个参数的构造方法：

```java
Random(long seed) // 使用long类型随机数种子创建一个随机数生成器
```

拥有相同种子的random对象，生成的随机数也相同,如果要改变随机数，就要使用setSeed方法重新设置此随机数的种子:

```java
Random random  = new Random(100);
System.out.println(random.nextInt());

Random random2  = new Random(100);
System.out.println(random2.nextInt());

// 运行结果都为-1193959466
```

## Java中随机数的原理，为什么说Java, C, .Net 都是伪随机数？

在Java中，所谓的随机数都是通过算法实现的，就是用你运行的时间作为种子，然后通过求余等运算计算出来的。
