首页 > 编程语言 >C#学习笔记- 随机函数Random()的用法详解

C#学习笔记- 随机函数Random()的用法详解

时间:2024-08-29 11:50:05浏览次数:10  
标签:返回 random 函数 C# Random 一个 详解 随机 随机数

原文链接:https://www.jb51.net/article/90933.htm

Random.Next() 返回非负随机数;

Random.Next(Int) 返回一个小于所指定最大值的非负随机数

Random.Next(Int,Int) 返回一个指定范围内的随机数,例如(-100,0)返回负数

1、random(number)函数介绍

random(number)返回一个0~number-1之间的随机整数.参数number代表一个整数.

示例:

trace(random(5));

2、Math.random()

返回一个有14位精度的0~1之间的数,注意没有参数。

示例:

trace(Math.random());

3、自定义的函数

我们有时候需要的随机数可不是这么简单。

比如我们想返回一个有两位小数的随机数,返回两个数之间的随机数,返回字母随机数,返回多个随机数等等,

这些都需要我们自己编写函数来实现。下面的代码直接复制到主场景第一帧就可以调用了。注意有的函数需要入口参数。

#1: 返回一个共有n位数,其中m位是小数的随机数

 Math.pow(n,m)用于返回一个以n为底,m为指数的数。乘方!

# 2: 返回一个n到m之间的随机数

 

之所以用random(m-n+1)是因为随机数的范围是m-n,加上1使得m也能在里面。加上n保证随机数以n为下限。

加上判断使函数更完整。另外,如果要返回一个负数随机数,也可以用randomNm(n,0);当然,我想更一般的是用-random(n);

# 3: 返回一个字母

 

#4: 返回一个不区分大小写的随机字母

如果要返回大写,把if条件句去掉就行了。如果要返回小写,可以把条件句改为恒成立,或者去掉条件,最后一句改为:

return c.toLowerCase(); String.fromCharCode(number)函数返回number代表数字的ASCII码。

toLowerCase()用于将大写字母转为小写。

# 5: 返回一个n到m之间的k个互异随机数

 

数组arrayK中的元素即为所得值。注意到我们借用了random(m-n+1)+n来返回一个n~m的随机数。所以m本身也会被返回。

如果要返回m以内的数,可以把n值改为0。如果要随机返回不确定个数,可以把入口参数的K值赋为k=random(m-n);

随机返回不一定互异的数,把判断去掉就可以了,注意i++不要漏掉。这里不再给出。

#指定若干个字符/数字,然后从中随机返回一个(或多个)字符/数字,可以把原字符赋给一个数组,再根据数组的下标来

决定返回值。这里不再举出函数,大家可以自己尝试。

#另需指出,对于随机设定一个MC的颜色值,我们较多采用mcColor.setRBG(random(0xFFFFFF));下面的例子中会有说明。

如果要指定一个色域,可以采用上面给出的函数。如果对Color对象不太了解的可以查帮助,这里不作讨论。

以上函数算是由random直接衍生的,下面再举个例子,可以说是衍生函数的衍生函数,其中会直接用到上面给出的函数,请注意。

#6: 返回一个指定长度的随机大写英文字符串

 

注意到StringCharCode方法,如果要写成小写,则把返回值写成arrayB.toLowerCase();如果返回一个不区分大小写的字符串,

则把注释去掉.如果要返回一个不指定长度的字符串,则可以把入口参数赋值为random(n);这样只指定其上限.此函数也可以用

randomAscii函数实现,留给大家自己思考.

#7:在几个区域中选出随机数

比如,在1~20,45~70这两段数之间选取一个随机数。因为区域数未定,所以直接用一个确定的函数编写多有不便,

我们要使用的方法就是用switch语句进行定向,具体的我们给出一个函数,返回一个1~20,45~70内的数,其它区域读者请自行更改。

 

注意,我们并没有写入口参数,而是直接在函数中就确定了是两段数,而且范围也是确定的。如果是三段,则改为a=random(3);

同样增加一个case就可以了。当然,你也可以把第段数的范围设为入口参数,这里就不再举例了。但是这样做可能会使参数增多,

我个人是不太喜欢一个需要很多参数的函数的。类似的,我们也可以随机返回一个字母段或几个字母段或者字母加数字段的一个数。

方法也只是前几个函数的一个结合。这里仅举一例,返回指定的大写字母段的一个随机字母。

提醒一下,小写字母的ASCII码a~z分别对应97~122.

 

其中用到一个函数ord(char),这是一个不推荐的函数.用于返回char字符的ASCII码。

如果大家想在任何地方调用函数,则需要稍稍变一下,把我们写的函数改变为全局函数.这样就可以不用标明路径而自如地向调用系统

函数一样了.方法如下.例如:函数randomXiao如果要声明为全局函数,需要把第一行改为:

 

对全局函数的概念不很清楚的朋友不用被这个名词吓倒.

这样改了函数第一行之后,在任何地方,比如在一个MC里,直接用(对,直接用,不用加_root路径了)randomXiao(n,m)就可以了.

标签:返回,random,函数,C#,Random,一个,详解,随机,随机数
From: https://www.cnblogs.com/Dongmy/p/18382076

相关文章

  • Vs Code 创建 .Net 项目
     VsCode打开终端窗口 在“终端”中输入以下命令创建项目:dotnetnewconsole--frameworknet8.0--use-program-main 终端默认是不可输入的在 launch.json中将 console 设置从 internalConsole 更改为 integratedTerminal:终端就可以输入了  在“终端”中......
  • Centos7 设置Java程序自启动
    1.创建一个system服务文件在/etc/systemd/system/目录下创建一个以.service结尾的文件,例如your-java-app.service。可以使用sudo命令和文本编辑器创建:sudovim/etc/systemd/system/your-java-app.service在文件中添加类似如下内容:[Unit]Description=ScshkJavaServic......
  • 【优技教育】Oracle 19c OCP 082题库(第3题)- 2024年修正版
    考试科目:1Z0-082考试题量:90通过分数:60%考试时间:150min本文为(CUUG原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。原文地址:http://www.cuug.com/index.php?s=/home/article/detail/id/3386.html第3题:3、Choosetwo.Whichistrueaboutthe&and&&prefi......
  • Oracle同一台服务器创建多个数据库
    有时候我们需要再同一台机器上创建多个数据库服务(不是单纯的数据库实例),每一个数据库可以有单独的服务运行,只是在一个机器环境而已。可以在不同的端口上监听,也可以在相同端口监听创建多个数据库步骤安装完Oracle数据库后,会自动安装很多工具,这里我们使用DatabaseConfiguration......
  • 易基因:多组学测序分析揭示m5C甲基化上调E2F1表达以促进卵巢癌肿瘤进展|Nature子刊
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。卵巢癌是全球死亡率最高的妇科癌症,其中上皮性卵巢癌是最常见的卵巢癌类型。由于缺乏可靠的卵巢癌早期筛查,导致诊断延迟,5年生存率仅为50%。尽管近些年来治疗技术取得了进展,但由于其发病机制的基因调控网络不明确,卵巢癌......
  • 数据结构(C)---双端队列(Deque)
    在使用本博客提供的学习笔记及相关内容时,请注意以下免责声明:信息准确性:本博客的内容是基于作者的个人理解和经验,尽力确保信息的准确性和时效性,但不保证所有信息都完全正确或最新。非专业建议:博客中的内容仅供参考,不能替代专业人士的意见和建议。在做出任何重要决定之前,请咨询相......
  • 【ComfyUI工作流】人物一致性工作流!
    前言本期分享一个人物一致性控制工作流,主要思路是通过固定随机数种子,定制潜空间噪声图案,提示词表情控制来实现任务一致性的控制,下面将进行工作流的讲解。***宏观工作流预览从宏观层面看,工作流主要有四部分组成,分别是提示词控制区域,主干道区域,潜空间控制区域和最终的图......
  • 用MySQL的GROUP_CONCAT函数轻松解决多表联查的聚合问题
    大家好呀,我是summo,最近遇到了一个功能需求,虽然也是CURD,但属于那种比较复杂一点的CURD,话不多说,我们先看一下需求。需求如下:有三张表,学生表、课程表、学生课程关联表,关联关系如下图:要求实现的功能:支持输入名称模糊查询,可以是学生名称也可以是课程名称,但只有一个输入框;要求以......
  • Android开发 - Parcel 类打包对象数据进行传递解析
    Parcel是什么Parcel是用于对象序列化和反序列化的一个类。通俗地说,它是一种轻量级的容器,常用于打包对象的数据(如基本类型和其他Parcelable对象),使它们能够在不同的组件(如Activity、Service等)之间传递Parcel的主要作用不同的组件(如Activity、Service)之间需要传递数据。......
  • DCN V2 Improved Deep & Cross Network and Practical Lessons for Web-scale Learnin
    目录概DCN-v2WangR.,ShivannaR.,ChengD.Z.,JainS.,LinD.,HongL.andChiE.D.DCNV2:Improveddeep&crossnetworkandpracticallessonsforweb-scalelearningtoranksystems,2020.概DCN的升级版.DCN-v2DCN-v2的cross/deep的结合方式上有上......