找回密码
 欢迎注册
楼主: 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-11-23 02:34 , Processed in 0.025888 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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