Java程序设计入门教程--随机类Random

news2024/11/25 0:47:18

随机数的类

        在程序设计中,经常都需要产生一些随机数,比如模拟随机抽奖、抽样等。

         Random类在java.util包中,是专门用于提供生成一个随机数的类,随机数的生成相关方法都在该内中。比如Random类的nextInt方法需要一int型值作为参数,并返回0到参数值但不包括参数值本身的一随机值。

模拟投掷骰子

         比如模拟扔有六个面的骰子:

face = 1 + randomNumbers.nextInt( 6 );

        参数6称为比例因子,代表着 nextInt方法将产生 (0–5)中的一个值,这就是所谓的缩放值范围,但六个面的骰子是数字1–6在每一面上 , 而不是 0–5,我们可以通过增加1来改变产生数的范围,这个1称为移动值,可以将产生的随机数移动到特定的范围。

         案例:模拟扔六个面的骰子20次的程序的范例程序。

 

package test;
import java.util.Random;

public class JavaDemo {
	public static void main(String[] args) {
		Random ran1 = new Random();
		int face;
		for(int i=0; i<20; i++)
		{
			face = 1 + ran1.nextInt(6);
			System.out.print(face+" ");
		}
	}
}

 

 

伪随机

        Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。

       相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。

Random()的两种构造方法

n Random() :创建一个新的随机数对象。
n Random(long seed) :使用单个 long 种子创建一个新的随机数对象。

        

多个随机数对象时的范例程序。  

范例程序结论

       以上程序中,对象random1random2均是通过指定种子数为100构造的,而这两个对象在相同次数类生成的随机数是完全一样的。

       所以为了避免出现这种情况,无论程序中需要多少个随机数,都只使用一个Random对象。


均匀分布的随机数

      Random类中的方法比较简单,每个方法的功能也很容易理解,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。

 例如:
public boolean nextBoolean()
该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。
public double nextDouble()
该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/600855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【生信】R语言在RNA-seq中的应用

R语言在RNA-seq中的应用 文章目录 R语言在RNA-seq中的应用生成工作流环境读取和处理数据由targets文件提供实验定义对实验数据进行质量过滤和修剪生成FASTQ质量报告 比对建立HISAT2索引并比对 读长量化读段计数样本间的相关性分析 差异表达分析运行edgeR可视化差异表达结果计算…

11.Ansible Roles介绍

什么是Ansible角色&#xff1f; 就像在现实世界中给不同的人分配角色一样,让他们成为医生工程师, 宇航员, 警察,或者厨师&#xff61;在Ansible的世界里, 你可以给服务器分配角色,让它们成为数据库服务器&#xff64; Web服务器&#xff64; Redis消息服务器或备份服务器&#…

LCUSB-13xB/M 系列高性能 USB 接口 CAN 卡在医疗体外诊断仪上的应用

1&#xff0c;LCUSB -13xB/M 系列高性能 USB 接口 CAN 卡的功能介绍 LCUSB -13xB/M 系列高性能 USB 接口 CAN 卡&#xff0c;坚固 金属外壳&#xff0c;具有更佳 EMC 性能&#xff0c;插到用户设备 USB 接口 上&#xff0c;快速扩展出 1~2 路 CAN 通道&#xff0c;可作为组件集…

java基础学习

一、注释 1&#xff09;当行注释 // 2&#xff09;多行注释 /* ... */ 3&#xff09;文档注释 &#xff08;java特有&#xff09; /** author 张三 version v1.0 这是文档注释&#xff0c;需要将class用public修饰 */ 二、关键字 &#xff08;1&#xff09;48个关键…

tinker CAD入门操作

入门 - 导航和菜单 欢迎来到设计世界&#xff01; 设计是发现所有尚未完成的东西的艺术。它是学习和教学&#xff0c;打破和制造&#xff0c;看到和展示的平等部分。 设计就是分享&#xff01; Tinkercad是一款功能强大且易于使用的工具&#xff0c;用于创建数字设计&#xff0…

CVE-2023-33246 Apache RocketMQ RCE

0x01 漏洞介绍 Apache RocketMQ是一款开源的分布式消息和流处理平台&#xff0c;提供了高效、可靠、可扩展的低延迟消息和流数据处理能力&#xff0c;广泛用于异步通信、应用解耦、系统集成以及大数据、实时计算等场景。 漏洞的官方描述为当RocketMQ多个组件&#xff0c;包括N…

chatgpt赋能python:Python分三行输入:提高编程效率的绝佳方法

Python分三行输入&#xff1a;提高编程效率的绝佳方法 Python是一种高级编程语言&#xff0c;以简洁、易读的代码著称。Python分三行输入是一种旨在提高编程效率的技术&#xff0c;它可以减少代码阅读时间、降低语法错误率&#xff0c;并且让代码更加易于维护。在本文中&#…

0501源码分析-启动过程-springboot2.7.x系列

文章目录 1前言2 启动第一阶段2.1 deduceFromClasspath 推断应用类型2.2 getSpringFactoriesInstances(Class)2.3 ApplicationContextInitializer2.4 ApplicationListener2.5 自定义接口实现配置示例 3 启动第二阶段3.1 SpringApplicationRunListener3.2 容器创建和准备 4 总结…

11. 数据结构之二叉树

前言 上一节&#xff0c;简单概述了树这种数据结构&#xff0c;以及树结构向下&#xff0c;具有某些一些特征的树&#xff0c;比如二叉树&#xff0c;B树&#xff0c;B树&#xff0c;堆等。其中&#xff0c;二叉树是一个很重要的模块。也是在一些技术面试中&#xff0c;可能会…

【Vue】学习笔记-Vuex

Vuex 理解VuexVuex是什么什么时候使用VuexVuex 工作原理图求和案例使用纯vue编写 搭建Vuex环境使用Vuex编写求和案例getters配置项四个map方法的使用多组件共享数据案例模块化命名空间 理解Vuex Vuex是什么 概念&#xff1a;专门在vue中实现集中式状态(数据) 管理的一个vue插…

基于P-Tuningv2轻量微调和推理chatglm

类ChatGPT的部署与微调(下)&#xff1a;从GLM、ChatGLM到MOSS、ChatDoctor、可商用_v_JULY_v的博客-CSDN博客随着『GPT4多模态/Microsoft 365 Copilot/Github Copilot X/ChatGPT插件』的推出&#xff0c;绝大部分公司的技术 产品 服务&#xff0c;以及绝大部分人的工作都将被革…

【CMake 入门与进阶(2)】CMake编译设置——多个源文件编译及生成库文件(附代码)

多个源文件 上篇我们学习了单个源文件的cmake 的编译&#xff0c;不过一个源文件的例子似乎没什么意思&#xff0c;我们再加入一个hello.h 头文件和 hello.c 源文件。在 hello.c 文件中 定义了一个函数 hello&#xff0c;然后在 main.c 源文件中将会调用该函数&#xff…

客服都要下岗了? 当ChatGPT遇见私有数据,秒变AI智能客服!

用ChatGPT搭建基于私有数据的WorkPlus AI客服机器人这个想法&#xff0c;源于WorkPlus售前工作需求。在ChatGPT之前&#xff0c;其实对话式AI一直在被广泛使用在客服场景&#xff0c;只不过不大智能而已。比如你应该看到不少电商客服产品&#xff0c;就有类似的功能&#xff0c…

车站信息管理系统(面向对象程序设计python版)

一、基本概述 1.项目背景 随着大数据时代的发展,大数据抓取了人们最想要的信息,数据查询能帮助用户获取更有用的信息,让每个人都能享受到大数据带给生活的高效和便捷。 2.设计目的 为了大大缩减人们出行选择站点所需时间,为了让人们在陌生地区,在对当地交通不熟的情况…

Redis数据类型之(哈希Hash和集合Set)

Redis数据类型之&#xff08;哈希Hash和集合Set&#xff09; 一定注意看红色注意项。 哈希&#xff08;Hash&#xff09;: Redis hash 是一个 string 类型的 field&#xff08;字段&#xff09; 和 value&#xff08;值&#xff09; 的映射表&#xff0c;hash 特别适合用于存…

promethues 之PromQL数据类型介绍(二)

promethues 之PromQL数据类型介绍(二) 1、PromQL 介绍 PromQL是promethues 监控系统内置的一种查询语言&#xff0c;类似于MySQL的SQL语句&#xff0c;该语言仅用于读取数据。PromQL是我们学习Promethues最困难也是最重要的部分。当Promethues从系统和服务收集到指标数据时&…

PIP-Net:用于可解释图像分类的基于patch的直观原型

文章目录 PIP-Net: Patch-Based Intuitive Prototypes for Interpretable Image Classification摘要本文方法模型结构Self-Supervised Pre-Training of PrototypesTraining PIP-NetScoring Sheet ReasoningCompact Explanations 实验结果 PIP-Net: Patch-Based Intuitive Proto…

bug 记录 - 接口被重复调用,响应时长不同,结果被覆盖的问题

发现问题与调试过程 需求&#xff1a;输入框中输入关键字&#xff0c;根据关键字去调用接口&#xff0c;返回模糊查询的结果集合。问题&#xff1a;输入的关键字越少&#xff0c;接口响应时间越长。例如&#xff1a;输入“阿”&#xff0c;接口响应时间大概是 5 秒&#xff0c…

【计算机网络中ip概念总结】【平时我们说的ip 到底是什么】【计算机网络中 ip地址是什么】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

【Linux】重定向dup

文章目录 前言重定向的原理dup函数添加重定向功能到myshell 前言 了解重定向之前需要明白文件描述符的工作规则&#xff0c;可以看这篇文章&#xff1a;文件系统 最关键的一点是&#xff1a;在进程中&#xff0c;在文件描述符表中&#xff0c;会将最小的、没有被使用的数组元…