找回密码
 欢迎注册
楼主: wayne

[分享] 屠龙刀的概率升级问题

[复制链接]
 楼主| 发表于 2012-1-14 19:28:33 | 显示全部楼层
19# KeyTo9_Fans
漂亮,状态转移矩阵比递推公式的表达更简洁。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-1-14 20:05:11 | 显示全部楼层
20# KeyTo9_Fans


原来是这么回事 学习了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-1-16 15:28:06 | 显示全部楼层
我改进了一下代码 把srand()函数放在外面 随机数质量高多了
  1. #include "stdafx.h"
  2. #include "iostream"
  3. #include "stdlib.h"
  4. #include "time.h"
  5. using namespace std;

  6. double n=1,k=0;        //n为实验总次数 k为实验成功(即1000次内升到九级)的次数
  7. void main()
  8. {
  9.         srand( (unsigned)time( NULL ) );
  10.         int shiyan();
  11.         double p;                        //p为概率
  12. C:
  13.         n++;
  14.         int b=shiyan();       
  15.         if (b)
  16.         {
  17.                 k++;
  18.         }
  19.         p=k/n;
  20.         cout<<p<<endl;
  21.         goto C;
  22. }

  23. int shiyan()
  24. {
  25.         int l=1;        //l为屠龙刀等级
  26.         int i=1;        //升级次数
  27.         int roll();
  28.         while(i<=1000)        //执行1000次升级操作
  29.         {
  30.                 int r=roll();
  31.                 if (r<=3)                //30%
  32.                 {
  33.                         l++;
  34.                 }
  35.                 else                        //70%
  36.                 {
  37.                         if(l==1)
  38.                         {
  39.                                 l=1;
  40.                         }
  41.                         else
  42.                         {
  43.                                 l--;
  44.                         }
  45.                 }
  46.                 if (l==9)
  47.                 {
  48.                         break;
  49.                 }
  50.                 else
  51.                 {
  52.                         i++;
  53.                 }
  54.         }
  55.         if (l==9)        //实验成功
  56.         {
  57.                 return 1;
  58.         }
  59.         else                //实验失败
  60.         {
  61.                 return 0;
  62.         }
  63. }

  64. int roll()        //随机一个1到10的整数
  65. {
  66.         int num = 1 + rand() % 10;
  67.         return num;
  68. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2012-5-4 15:27:44 | 显示全部楼层
游戏中的数学很强悍啊。RPG游戏中用得很广啊。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2012-5-6 14:14:10 | 显示全部楼层
24# rayfekeeper
赫赫,一看就知道阁下是游戏领域的专家
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-27 00:01 , Processed in 0.043202 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表