请教各位大侠:
最近小弟要作个小游戏,玩家选1~9数字(一次一个),如果与后台出现的数字一致(也是1~9)就中奖,数字越大,其中奖的几率越低,但是对应的奖品越好。我本来想把这些写死在程序里,但考虑到以后的重用性,最好能写成可配置的(不管用数据库还是其他方式都可)。小弟编程经验尚浅,望各位老大不吝指点,谢谢!!!
最近小弟要作个小游戏,玩家选1~9数字(一次一个),如果与后台出现的数字一致(也是1~9)就中奖,数字越大,其中奖的几率越低,但是对应的奖品越好。我本来想把这些写死在程序里,但考虑到以后的重用性,最好能写成可配置的(不管用数据库还是其他方式都可)。小弟编程经验尚浅,望各位老大不吝指点,谢谢!!!
public String begin(int x)
{
if (x<=3)
{产生随机数0-6} //中奖率...%
if (x>3 && x<=5)
{产生随机数1-7} //中奖率...%
if (x>5 && x<=7)
{产生随机数2-8} //中奖率...%
if (x>7 && x<9)
{产生随机数3-9} //中奖率...%}在每个 {产生随机数...} //中奖率...%
里面加一句如 switch case 1:return "电视机"
呵呵,一次只能选一个数字,玩家参与次数越多,得奖的机会就越多。
考虑重用是因为以后可能是1~5个数字,每个数字的中奖几率和这次的也不同。
可以这样理解:在去摸球之前你已经把你猜到的数字告诉公证,当你从盒子里拿出来的球号码和你告诉公证的一致,则中奖。盒子里数字大的球少,数字小的球多。
谢谢,你说的很对,这样就不要以后有一个类似的游戏,就要再重新写个程序来跑了,只要改配置就可以了。
有没有好的办法"
这个也是我想问的,呵呵
if 10<=n<=17 return 2
if 18<=n<=24 return 3
if 25<=n<=30 return 4
if 31<=n<=35 return 5
if 36<=n<=39 return 6
if 40<=n<=42 return 7
if 43<=n<=44 return 8
if n==45 return 9
java工程师
java jsp servlet spring hibernate js css
上面会一部分既可qq 283765999
地点:北京
public class Test
{
public int timer=0;
public int ii =0;;
public static void main(String args[]) throws Exception
{ System.out.println("猜数字游戏开始了!请输0-9之间任意数字");
Test t= new Test();
System.out.println(t.myrandom(8,50));//将数字8传入摇奖机.然后设置中奖机率+50,false表示没猜对.true表示猜对了.
}
public boolean myrandom(int in,int probab)//第一个参数表示你传入的数字.第二个表示中奖机率.
{ Random r = new Random();
for (int i=0;i<=(in+probab);i++)
{
ii=r.nextInt(10);
System.out.println("ii = "+ii);
if (ii==in)
{
timer++;
if (timer==in)
{return true;}
}
}
return false;
}
}哈哈。我写了一个算法..写得辛苦了点.20分就全给我了吧。数字越大,中奖机率越小.可以手动添加中奖机率.
此算法拿游戏公司去应该都行了吧?简单实用~
可是照你的算法,能保证+50
是不是可以修改成这样Random r = new Random();
int timer;
int jcm = JCM(probab, 10) //最小公倍数
for (int i=0;i<= jcm ;i++)
{
ii=r.nextInt(10);
System.out.println("ii = "+ii);
if (ii==in)
{
timer++;
if (timer==jcm/probab)
{return true;}
}
}
return false;
我的思路是:想像一条长度为1的线段,将它分割为N段,第i段的长度为f(i),然后在这个线段中随机取一点,看这点是落在哪一段中。
应该有办法做出0~1之间精度足够高的平均分布的随机序列吧,然后和这些线段比较一下就有结果了(我所指的“精度足够高”的意思是说,在任意一个线段中i中,都可以落下足够多的随机序列点)。
然后把N和f(i)放在配置文件里就可以了
为什么要i<=(in+probab)?如果5的中奖率是50%,i<=55,好像就有问题了吧?
probab是增加中奖的机会...
也可以说成是增加中奖率.但不是用%分来说的中奖率。具体%比是多少.还得跟据参数自已算下.
4的中奖率就是20%..5的中奖率就是16% 7的中奖率就是14%.....
..............
跟据设的值自已推算下百分数表示的中奖率
System.out.println("ii = "+ii);