【Java】揭秘如何利用不等概率随机数制作十赌九骗的赌大小游戏,请不要沉迷各种游戏

上次在《【Java】在一定的范围内产生不同的随机数》(点击打开链接)中说明了如何产生随机数,然后还说了如何在一定的范围内产生不同的随机数,但是这些都是等概率产生随机的问题。等概率在正常情况下,更应该说是学术上是够用了,但是在现实生活中,尤其在现在游戏必须打黄赌毒的擦边球吸引人的大背景下,等概率产生随机数是远远不够用的。你作为游戏商家,说得难听点就是庄家,肯定要不等概率产生随机数来圈玩家的钱。比如,合成装备就你就不能让它合成成功是50%,合成不成功是50%,你必须把合成成功设置为1%甚至更小。这样你才能让玩家通过墨菲定律来给你上供大量的人力、物力。所谓的墨菲定律在概率论里面有:也就是小概率事件通过大量测试必然发生,通俗点来说,就是“圣人千虑,必有一失。愚者千虑,必有一得。”

一、基本目标

设置一个十赌九骗的赌大小游戏,不等概率地产生出大和小的结果。

1、首先,这是个非常简单的赌大小游戏,考虑到还有小部分没有接触过黄赌毒的好孩子,还是介绍一下:用户输入0代表下注“小”,1代表“大”,之后随机产生出三个1-6的整数,如果这三个数相等就是“通杀”,无论用户下注什么都是是输,如果这三个数的和在3-10之间,那么就是“小”,如果是11-18之间就是“大”,对比用户猜的结果,看用户是否猜中。

【Java】揭秘如何利用不等概率随机数制作十赌九骗的赌大小游戏,请不要沉迷各种游戏

2、如果这个程序正常来写,很简单,随机产生3个数,合计判断就行了,但是,为了让玩家不知不觉地消耗掉金钱,程序绝对不能这样写,如果玩家猜“小”,你产生1-3的机率要调小一点,如果玩家猜“大”,你产生4-6的概率就小一点,所以能够有如下的结果,假如玩家玩50次,都下注“小”,他只能赢8次:

【Java】揭秘如何利用不等概率随机数制作十赌九骗的赌大小游戏,请不要沉迷各种游戏

4、加入玩家玩二十万次,都下注“大”,它只能赢七万次

【Java】揭秘如何利用不等概率随机数制作十赌九骗的赌大小游戏,请不要沉迷各种游戏

2、之后就是整个程序的核心部分,如何根据用户输入的概率产生每一个结果的问题,这里利用到概率论的二项分布的思想。如果用户输入的0,也就是小,那么,所产生的结果,有70%的概率是4-6,new Random().nextInt(3) + 4;能够产生一个4-6的整数,这是在《【Java】在一定的范围内产生不同的随机数》(点击打开链接)中已经说明,其它部分与其互补,不再赘述。主要说说是如何设置有70%产生的结果是4-6。你在产生结果之前,先利用new Random().nextDouble()产生一个随机数,这个随机数是等概率的在0-1之间的小数,这个小数小于0.7的概率肯定就是70%,那么则意味着有70%概率进入这个if,只有30%的概率进入else。利用这种随机数再嵌套事件的方式,你可以做很多事情。其实也就一个考研考生,甚至参加过概率论期末考的学生都懂的二项分布而已,没什么大不了。 3、之后就是判断结果,结算部分,没有什么大不了的,Java、甚至是程序设计中的基础的基础,就是一堆for跟if,所以为什么说条件结构、循环结构,你能够写好,你就写好程序了。首先判断是不是通杀,因为通杀就不用想了嘛,大小全收,这里遍历整个数组,不要变量到最后,遍历到倒数第二个就可以了。看是否都是上一个数等于后一个数,如果不是则不是通杀。不是通杀的话,则对结果数组求和,这里的求和用到了JDK1.5之后的一种新型遍历,这个在《【Java】用JDK1.5之后的新型数组遍历方法遍历HashMap、HashMap不应该存储多元组》(点击打开链接)已经说了,不再赘述。这里新型的条件结构只能用到一个变量,不好写,因此还是用旧式的if与else。把得出来的和与玩家猜的N对照,如果相等那么就玩家就赢了,反之亦然。

至此,就随机数的不等概率问题就做完了,整个程序连起来的结果如下:

来源:yongh701

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年1月12日
下一篇 2015年1月12日

相关推荐