我的世界java怎么改随机刻度_java⽣成随机数
⼀、利⽤Math.Random()⽅法来⽣成随机数。
在Java语⾔中⽣成随 机数相对来说⽐较简单,因为有⼀个现成的⽅法可以使⽤。在Math类中,Java语⾔提供了⼀个叫做random的⽅法。通过这个⽅法可以让系统产⽣随机 数。不过默认情况下,其产⽣的随机数范围⽐较⼩,为⼤于等于0到⼩于1的double型随机数。虽然其随机数产⽣的范围⽐较⼩,不能够满⾜⽇常的需求。如 ⽇常⼯作中可能需要产⽣整数的随机数。其实,只要对这个⽅法进⾏⼀些灵活的处理,就可以获取任意范围的随机数。
如我们可以先通过 random⽅法⽣成⼀个随机数,然后将结果乘以10。此时产⽣的随机数字即为⼤于等于0⼩于10的数字。然后再利⽤Int ⽅法进⾏转换(它会去掉⼩数掉 后⾯的数字,即只获取整数部分,不是四舍五⼊)。最后即可获取⼀个0到9的整数型随机数字。其实现⽅法很简单,就是对原有的random⽅法按照如下的格 式进⾏变型:(int)(Math.Random()*10)即可。其实我们还可以对这个⽅法进⾏扩展,让其产⽣任意范围内的随机数。⾄需要将这个10换 成n即可,如改为(int)(Math.Random()*n)。此时应⽤程序就会产⽣⼀个⼤于等于0⼩与n 之间的随机数。如将n设置为5,那么其就会产 ⽣⼀个0到5之间的整数型的随机数。如果将这个写成⼀个带参数的⽅法,那么只要⽤户输⼊需要⽣成随机数的最⼤值,就可以让这个⽅法来⽣成制定范围的随机 数。在Java中定义⾃⼰的⼯具库
nextint()方法有时候程序员可能需要⽣成⼀个指定范围内的随机偶数或者奇数。此时是否可以通过这个⽅法来实现呢? 答案是肯定的。如现在程序要需要⽣成⼀个1-100范围内的偶数。此时该如何实现?⾸先,需要⽣成⼀个0到99之内的随机数(⾄于这⾥为什么是99,⼤家 耐⼼看下去就知道原因了)。要实现这个需求,很简单吧,只要通过如下语句就可以实现: i=1+(int)(Math.Random()*100)。其中(int)
(Math.Random()*99)产⽣0到99的整数型随机数。然后再加 上1就是产⽣1到100之间的随机整数。然后将产⽣的随机数赋值给变量i。但是此时其产⽣的随机数即有偶数,⼜有奇数。⽽现在程序员需要的是⼀个随机的偶 数。那么我们可以在后⾯加上⼀个if判断语句。将这个随机数除以2,如果没有余数的话(或者余数为0)则表明这个随机数是偶数,直接返回即可。如果其返回 的余数不为零,那么就表明其是奇数,我们只要加上1就变为了偶数,返回即可。注意,在上⾯的随机数⽣成中,笔者采⽤的范围是0到99,然后再加上1让其变 为1到100的随机数。最后的结果就是⽣成1到100之间的随机偶数。其实,如果要范围随机奇数的话,⾄需要对上⾯的语句进⾏稍微的修改即可。Java: 改变你我的世界
假设现在⽤户想⽣成⼀个任意范围内的奇数或者偶数,能够实现吗?假设现在⽤户想实现⼀个m到n之间的任意偶数(其中m
可见虽然random⽅法其⾃⾝产⽣的随机数有⽐较严格的范围限制。但是只要对其进⾏合理的转换,程序员仍然可以采⽤这个⽅法产⽣⽤户所需要的随机数据。
⼆、通过Random类来⽣成随机数。
在Java语⾔中,除了可以通过random ⽅法来产⽣随机数之外,还可以通过⼀个random类来产⽣随机数。程序开发⼈员可以通过实例化⼀个Random对象来创建⼀个随机数的⽣成器。如 Random i=new Random()。通过这条语句就利⽤了Random类创建了⼀个随机数的⽣成器。不过以这种⽅法创建随机数时,与采⽤Random⽅法产⽣随机数的机制 不同。利⽤现在这种⽅式实例化对象时,Java编译器会以系统当前的时间作为随机数⽣成器的种⼦。由于时间时时刻刻在变化的。若以这个时间作为⽣成器的种 ⼦,就可以保证⽣成的随机数真的是随机的,其⽣成的随机数重复率会⼤⼤的降低。
利⽤这种⽅法其⽐较⽅便。如可以利⽤提供的关键字,让 程序返回⼀个随机的整数(采⽤int nextInt(10))等等。不过其返回控制要⽐Random⽅法困难⼀点。如现在需要系统提供⼀个10到50之间的随机奇数, 利⽤这个Random类就⽆法完成。也就是说,利⽤这个Random类来⽣成随机数,其只能够控制上限,⽽不能够控制下限。换⼀句话说,其可以指定最⼤的 随机数范围,⽽不能够指定最⼩的随机数范围。所以,在灵活性上,其⽐Random⽅法要稍微差⼀点。
另外利⽤这个⽅法来实现的话,必 须先创建⼀个对象。也就是说利⽤Randow类来创建对象。这跟Randow⽅法不同。像上⾯举的例⼦中,Randow⽅法本⾝就是⼀个math类中⽅ 法,可以直接调⽤,省去对象创建的⽅法。为此笔者建议各位读者与程序开发⼈员,最好还是使⽤Random⽅法来创建随
机数。只有在⽣成⼀些⽐较特殊的随机 数时采⽤Random类。如现在需要⽣成⼀个概率密度为⾼斯分布的双精度值随机数时,则通过采⽤Random类的⽅法来创建随机数相对来说⽐较简单⼀点。
三附、产⽣随机的字符。
上⾯介绍的两种⽅法,产⽣的都是随机的数值型数据。但是有时候⽤户可能还需要产⽣随机的字符。其实也可以利⽤random⽅法来产⽣随机字符。如可以利 ⽤代码⽣成⼀个随机的⼩写字符:(char)(‘a’+Math.random()*(‘z’-‘a’+1))。其实这跟⽣成任意两个数之间的随机数类 似。通过以上的代码就可以⽣成⼀个范围之内的任意随机字符。通过对这个代码进⾏适当的修整,还可以⽣成任意两个字符之间的随机字符与任意⼤写字符的随机字 符。其转换的⽅式跟上⾯提到的任意范围之内的随机数类似。各位读者若感兴趣的话,可以⾃⼰进⾏测试⼀下。师傅领进门,修⾏在⾃⾝。如果笔者在这⾥⼀股脑⼉ 将所有的答案告诉⼤家,⼤家的印象不会很深。⼤家若回去⾃⼰动⼿试试看,反⽽更容易记住。
笔者在这⾥给⼤家⼀个提⽰,只需要根据m+(int)(Math.Random()*(n-m))这条语句来调整(char)(‘a’+Math.random()*
(‘z’-‘a’+1))这个代码即可。
最后笔者需要强调的⼀点就是在⽤户传⼊参数的时候,最好要对⽤户传⼊的参数进⾏合法性检查。以
免⽤户传⼊的参数不符合既定的要求,如参数需要的是数值型的数据⽽传⼊的却是字符型的数据,⽽导致程序运⾏出错。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。