Java创建随机数的四种方式总结
作者:草木之花 发布时间:2022-05-11 10:29:17
标签:Java,随机数
第一次接触到随机数还是在c语言里面 使用的是 rand(); 但是重新执行一次的时候会发现,诶,居然和上一次执行的结果是一样的,因为没有初始化种子,所以系统用的都是统一的种子这时就会出现每次产生的随机数都一样,这时就会使用到 srand();这个随机数的发生器, 把种子给定当前的时间 即 srand((unsigned) time (&t)); 我c语言常用的随机数函数如下:
c语言随机数
#include <stdio.h>
int main(void) {
int left,right;
printf("请输入一个数:");
scanf_s("%d%d",&left,&right);
//srand((unsigned)time(NULL));
//for(int i = 0; i<10; i++)
//printf("%d\n",rand() % one);
//改进
for (int i = 0; i < 10; i++)
printf("随机值如下:%d\n", srandNext(left, right));
return 0;
}
/********************************************************************************
* @Function: srandNext
* @Description:Find a random integer from min to max
* @Author: caiziqi
* @Version: 1.1
* @formal parameter:min : is the minimum value of the value range of this random number function, max: is the maximum value range of this random number function
* @Date: 2022-7-26
* @Return : returns a random integer
********************************************************************************/
int srandNext(int max,int min) {
//To prevent users from passing parameters incorrectly
if (max <= min) {
if (max == min) {
return max;
}
int temp = max;
max = min;
min = temp;
}
unsigned int static seed = 0;
seed++;
srand((unsigned)time(NULL) + seed * seed);
return rand() % (max - min + 1) + min;
}
当然这不是最主要的今天是要讲我学到的java中的四种创建随机数的方法
java
以下代码都是以a ~ b 之间 求出一个随机整数
1.Random
创建对象
Random ra = new Random();
int right = (Math.max(a,b)) ;
int left = (Math.min(a,b);
int nu = (ra.nextInt(right) + left );
取值范围 left 最小值 right 最大值
2.SecureRandom
创建对象
SecureRandom sra = new SecureRandom();
int right = (Math.max(a,b)) ;
int left = (Math.min(a,b);
int nu = (sra .nextInt(right) + left );
取值范围 left 最小值 right 最大值
3.ThreadLocalRandom
创建对象
ThreadLocalRandom tra = ThreadLocalRandom.current();
求出随机数的左值和右值
int right = (Math.max(a,b)) ;
int left = (Math.min(a,b);
int nu = (tra .nextInt(right) + left );
取值范围 left 最小值 right 最大值
4.Math.Random
由于 Math 里面的方法是静态的所以可以直接 类名.方法名 使用
int number = (int)(a + Math.random()*(b-a+1)) //返回一个int类型的参数 所以用 int 接收
范围 a <= 随机数 < (b -a +1)
2 <= 随机数 < (4 -2 +1 )
完整代码
import java.security.SecureRandom;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;
public class FourWaysOfRandomNumbers {
public static void main(String[] args) {
//用户输入两个数, 然后程序取这两个数里面的其中随机一个数
Scanner input = new Scanner(System.in);
System.out.print("请输入两个数:");
int a = input.nextInt();
int b = input.nextInt();
// 取值范围 left 最小值 right 最大值
int right = Math.max(a,b);
int left = Math.min(a,b);
int nu;
//四种生成随机数的方法
//第一种
Random ra = new Random();
while( true){
nu =(ra.nextInt(right) + left ) ;
System.out.println(nu);
//找到最大随机整数 输出并结束
if(nu == right) {
System.out.println(nu);
return;
}
}
//第二种
/*
SecureRandom sra = new SecureRandom();
while(true){
nu =(sra.nextInt(right) + left ) ;
System.out.println(nu);
//找到最大随机整数 输出并结束
if(nu == right) {
System.out.println(nu);
return;
}
}*/
//第三种 在多线程的时候使用 是最佳的; 因为它会为每个线程都 使用不同的种子
/* ThreadLocalRandom tra = ThreadLocalRandom.current();
while(true){
nu =(tra.nextInt(right) + left ) ;
System.out.println(nu);
//找到最大随机整数 输出并结束
if(nu == right) {
System.out.println(nu);
return;
}
}*/
/* //第四种
int value = (int)(a + Math.random()*(b-a+1));
System.out.println(value);
*/
}
}
来源:https://blog.csdn.net/m0_58520840/article/details/125991577
0
投稿
猜你喜欢
- 本文实例讲述了Java基于IO流读取文件的方法。分享给大家供大家参考,具体如下:public static void readFile(){
- 本文实例为大家分享了java实现猜数字游戏的具体代码,供大家参考,具体内容如下随机生成0~100的数字,通过控制台输入猜测数字,输出进行提示
- 在开发Android应用程序中,经常会自定义View来实现各种各样炫酷的效果,在实现这吊炸天效果的同时,我们往往会定义很多attr属性,这样
- 前言1、下面是一个效果展示;2、先抱怨一下,在博客上面的抄袭真的非常严重,为了实现一个图片滑动验证,我搜索了挺久的资料,不过内容翻来覆去就是
- 本文实例讲述了Android中断线程的处理方法。分享给大家供大家参考。具体方法如下:我现在对一个用户注册的功能1.用ProgressDial
- FTP(File Transfer Protocol)就是文件传输协议。通过FTP客户端从远程FTP服务器上拷贝文件到本地计算机称为下载,将
- Mybatis 复杂对象resultMap数据对象含有普通属性,一对一对象,一对多对象(2种情况:单一主键和复合主键)下面是resultMa
- 附GitHub源码:WebViewExplore一、WebView的基础配置WebSettings ws = getSettings();w
- 一、TimeZone 简介TimeZone 表示时区偏移量,也可以计算夏令时。在操作 Date, Calendar等表示日期/时间的对象时,
- 一、概述现在大多数的电商APP的详情页长得几乎都差不多,几乎都是上面一个商品的图片,当你滑动的时候,会有Tab悬浮在上面,这样做用户体验确实
- 本文实例为大家分享了JAVASE系统实现抽卡功能的具体代码,供大家参考,具体内容如下先看下文件结构使用到的知识点:看下Client类的实现:
- 本文实例讲述了Java单例模式下的MongoDB数据库操作工具类。分享给大家供大家参考,具体如下:我经常对MongoDB进行一些基础操作,将
- 一、问题定义:问下有一个数组,这些数组中的值都有自己的权重,怎样设计才能高效的优先取出权重高的数??例如:权重: 8 2&nbs
- 一般文本文件我们以日志文件.log文件为例:import java.io.BufferedReader; import java.io.Fi
- Spring介绍:spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而, Spring的用途不仅限于服务
- 导语:有些时候我们所需要查询的数据量比较大,但是jvm内存又是有限制的,数据量过大会导致内存溢出。这个时候就可以使用流式查询,数据一条条的返
- 一、synchronized 有不足新事物的出现要不是替代老事物,要么就是对老事物的补充JUC 的 locks 就是对 synchroniz
- 在类中自定义的“函数”称为“方法”,由于C#是完全面向对象的
- 已经有很多关于 Flutter WebView 的文章了,为什么还要写一篇。两个原因:Flutter WebView 是 Flutter 开
- 本文实例讲述了C++实现的O(n)复杂度内查找第K大数算法。分享给大家供大家参考,具体如下:题目:是在一组数组(数组元素为整数,可正可负可为